Когда вы используете перенаправитель с внутренним перенаправлением (т. Е. goToRoute
), параметры передаются вместе с ним. Таким образом, если вы добавите свой Refferrer к запросу до фактического перенаправления:
// Assuming $request is a Zend_Controller_Request
$request->setParam('ref', $referrer);
// then use the redirector
тогда эта переменная будет передана вместе с запросом при перенаправлении. Итак, вам нужно будет проверить / захватить эту переменную из запроса в действии, на которое вы перенаправили, и затем установить его как скрытое поле в форме. Затем, когда ваша форма отправляет сообщение для входа в систему, вы можете снова проверить переменную ref
и при успешном входе в систему перенаправить ее в это место.
Теперь на вашем месте я бы не использовал реферал в качестве URL-адреса, а был бы сериализованным или закодированным в json массивом параметров предыдущего запроса. таким образом, вы можете использовать goToRoute
и во втором экземпляре.
Конечно, если перенаправление пришло из какого-то пост-действия, содержащего конфиденциальные данные, вы не захотите это делать. В этом случае вы захотите использовать сеанс, как было предложено ранее.
Прежде всего, лучший совет, который я могу дать, это взглянуть на код Zend_Controller_Router_Rewrite
и Zend_Controller_Action_Helper_Redirector
.