我在观察者的checkout_controller_onepage_save_shipping_method的magento结帐过程中有一个钩子。一旦用户在Magento中选择运送方法然后点击" next"按钮保存送货方式并继续结帐。
我编写的代码有时会告诉用户(取决于各种因素,例如购物车项目和他们被运送到的状态),他可能无法继续结帐流程,必须致电商店而不是特殊运费指令。
常规重定向功能在一个页面结帐中不起作用,因为它包含在一个AJAX脚本中,我尝试了以下内容:
Mage::getSingleton('core/session')->addError('The shipping required for one of the products you are attempting to order..');
$response1 = $observer->getResponse();
$url = Mage::getUrl('checkout/cart');
$response1->setRedirect($url);
和
Mage::throwException($this->__('The shipping required for one of the products you are attempting to order requires special instructions, please call us.'));
$observer->getRequest()->setParam('return_url','http://www.google.com/');
exit;
和
Mage::app()->getFrontController()->getResponse()->setRedirect(Mage::getUrl('checkout/cart'));
Mage::app()->getResponse()->sendResponse();
exit;
但这些都不起作用。我相信我必须覆盖OnePageController.php中的一些函数,但我不知道我需要更新什么。任何帮助将不胜感激。谢谢!
答案 0 :(得分:1)
我最近在尝试在一个页面结帐过程中创建错误消息时遇到了同样的问题,经过多次尝试后我可以取消该过程并向用户发出错误消息(我的目标是在观察者中执行此操作)功能)。
我的代码:
$result['success'] = false;
$result['error'] = true;
$result['error_messages'] = implode(', ', $errors);
$response = Mage::app()->getResponse();
$response->setBody(Mage::helper('core')->jsonEncode($result));
$response->sendResponse();
exit;
答案 1 :(得分:0)
您正在设置重定向并将错误附加到AJAX请求。由于步骤由javascript控制,因此您有两种选择:
window.location
或提交隐藏表单第一个会更容易,但第二个会提供更好的用户体验。您需要重定向到自定义控制器才能添加错误消息并将用户发送回购物车页面。