Magento是否有观察员检测结帐流程的开始?这包括点击页面checkout/onepage/
或checkout/onestepcheckout/
。如果可能的话,我想避免重写控制器。
答案 0 :(得分:8)
每个控制器操作都会导致多个目标事件在Mage_Core_Controller_Varien_Action
(link)中触发,这是所有操作控制器的超类。这些事件不同地涉及从模块路由器配置+控制器路径+操作派生的“完整操作名称”,以及正在请求的路由名称。
对于标准单页结帐,完整操作名称为checkout_onepage_index
,路径名称为checkout_onepage
。
<强> renderLayout():强>
controller_action_layout_render_before_'.$this->getFullActionName()
<强> preDispatch()方法强>
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()
的事件可能很有用。您将要测试“客户已登录”和“客户已注销”方案。虽然predispatch事件是涉及重定向的逻辑的首选,但您需要平衡您的需求与重复购物车/报价+客户会话逻辑。
答案 1 :(得分:4)
看看@ controller_action_predispatch_checkout_onepage_index
事件
答案 2 :(得分:1)
你为什么要这么做呢?根据您检查的内容,您可以在将它们添加到购物车后执行此操作? checkout_cart_save_before