我在事件checkout_controller_onepage_save_shipping_method期间验证运输报价,如果验证失败,我想将用户送回选择运输方法,但我也想显示一条消息,说明为什么失败。 Magento是否有内置的方法?
我已经在验证数据,我只是缺少重定向到运输方式和显示消息的方式。
最佳答案
与往常一样,艾伦·斯托姆(Alan Storm)的回答是有益的和启发性的。但是在这种情况下,一页结帐主要是AJAX,它会忽略 session 错误消息,直到离开结帐页,您才会看到它。
在saveShippingMethodAction
中,存在以下行:
$result = $this->getOnepage()->saveShippingMethod($data);
...然后$ result是JSON编码的。如果覆盖
Mage_Checkout_Model_Type_Onepage::saveShippingMethod
来执行检查,然后控制返回的内容,则可以插入错误消息,该错误消息将返回到浏览器并在弹出窗口中显示给用户。您的替代可能看起来像这样:
public function saveShippingMethod($shippingMethod)
{
if ($this->doesntApplyHere()) {
return array('error' => -1, 'message' => $this->_helper->__('Explain the problem here.'));
}
return parent::saveShippingMethod($shippingMethod);
}