Magento 中是否有观察者来检测结帐过程的开始?这将包括点击页面checkout/onepage/
或checkout/onestepcheckout/
. 如果可能,我想避免覆盖控制器。
3 回答
每个控制器动作都会产生多个目标事件,这些事件在Mage_Core_Controller_Varien_Action
(link)中触发,所有动作控制器的超类。这些事件不同地涉及从模块路由器配置+控制器路径+动作派生的“完整动作名称”,以及被请求的路由名称。
在标准单页结帐的情况下,完整的操作名称是checkout_onepage_index
,路线名称是checkout_onepage
。
渲染布局():
controller_action_layout_render_before_'.$this->getFullActionName()
预调度():
controller_action_predispatch_' . $this->getRequest()->getRouteName()
controller_action_predispatch_' . $this->getFullActionName()
postDispatch():
controller_action_postdispatch_' . $this->getRequest()->getRouteName()
controller_action_postdispatch_' . $this->getFullActionName()
您观察到哪些事件将取决于 OneStepCheckout 模块如何捕获路由。getRouteName()
如果您需要区分路由和模块,基于 - 的事件可能很有用。您需要测试“客户已登录”和“客户已注销”场景。虽然预调度事件对于涉及重定向的逻辑是首选,但您需要平衡您的需求与重复购物车/报价 + 客户会话逻辑。
看看@controller_action_predispatch_checkout_onepage_index
事件
为什么要这么晚做?根据您要检查的内容,您可以在将它们添加到购物车后进行吗?checkout_cart_save_before