I often find myself writing calls to CRM_Utils_Redirect in my postProcess methods.
But in core code I don't see this. I see the use of methods like $session->replaceUserContext and postProcess functions that end seemingly without telling me where to go next.
I feel like CiviCRM is often clever enough to go to load different pages on form submission based on where you came from. I have no solid proof of that but lets give Civi the benefit of the doubt on that one :)
I'm guessing there is a structure somewhere that is telling CiviCRM what page to load next but I have failed to spot what that is.
I'm interested in the canonical way that CiviCRM does this (if there is a canoncial way) and knowing how legacy that is, and also what I should be doing.
If anyone could enlighten me, I'd be grateful :)
PS. I am not so interested in "you should write that in angular" enlightenment, at least not in the answer to this question.