Мне нужно выдать сообщение об ошибке, если введенный пин-код платежного адреса не совпадает с указанным. Я написал наблюдателю, чтобы сделать то же самое. Но сообщение об ошибке не будет отображаться, пока страница не будет обновлена / перезагружена. Я попробовал некоторые методы, чтобы перезагрузить одностраничную проверку (упомянутую в коде), но ни один из этих методов, кажется, не работает для меня. Как мне этого добиться? Вот мой код наблюдателя:
public function customerAddressSaveBefore(Varien_Event_Observer $observer){
...
$addressId = Mage::app() ->getRequest()->getPost("billing_address_id");
$address=Mage::getModel('customer/address')->load($addressId);
if(in_array($address->getPostcode(),$pincodes)){
Mage::log("Pincode verfied", null, 'system.log', true);
}
else{
Mage::log("Invalid Pincode", null, 'system.log', true);
Mage::getSingleton('core/session')->addError('Sorry cannot deliver in this pincode. Please specify another address');
///----The following are the methods i tried---//
// method 1
Mage::app()->getResponse()->setRedirect('checkout/onepage/');
// method 2
// $response = $observer->getResponse();
// $request = $observer->getRequest();
// $response->setRedirect(Mage::getUrl('checkout/onepage'),301);
// Mage::getSingleton('checkout/session')->setNoCartRedirect(true);
// method 3
// // $observer->getRequest()->setParam('return_url','http://localhost/koottzz/checkout/onepage/');
Mage::log("Invalid Pincode redirect", null, 'system.log', true);
exit;
}
}
Если кто-то может помочь, это будет здорово. Любая помощь будет оценена.