Magento redirect from observer
Redirection in observer doesn’t work normally as it do in Blocks, templates and controllers. Also there is no standard code to redirect from observer that works in every situation.
You will need an argument to achieve redirect when using below code:
public function observingMethod(Varien_Event_Observer $observer)
{
$observer->getRequest()->setParam(‘return_url’,$urlToRedirect);
}
Note that $observer object should have getRequest() method to make above code work. You may need to use $observer->getEvent()->getFront()->getRequest() otherwise, or simply var_dump/Mage::log $observer to get better idea what methods the object have.
Or you can use below code which is not recommended:
public function observingMethod() {
header(‘Location: ‘ . $urlToRedirect);
exit;
}
We don’t need any arguments using above method.
Another approach, again not recommended:
public function observingMethod(Varien_Event_Observer $observer)
{
$response = $observer->getResponse();
//$response = Mage::app()->getFrontController()->getResponse();
$response->setRedirect($urlToRedirect);
Mage::app()->getFrontController()->sendResponse();
}