有没有在Magento观察员检测结帐过程的开始? 这将包括命中页面checkout/onepage/
或checkout/onestepcheckout/
。 我想如果可能避免重写控制器。
Answer 1:
每个控制器动作将导致其在发射多种有针对性的活动Mage_Core_Controller_Varien_Action
(链接) ,超类的所有动作控制器。 这些事件不同地涉及“全动作名称”,从模块的路由器配置+控制器路径+行动,以及正被请求的路径名的。
在标准onepage结账的情况下,完整的动作名称是checkout_onepage_index
和路由名称是checkout_onepage
。
renderLayout():
controller_action_layout_render_before_'.$this->getFullActionName()
preDispatch()方法:
controller_action_predispatch_' . $this->getRequest()->getRouteName()
controller_action_predispatch_' . $this->getRequest()->getRouteName()
controller_action_predispatch_' . $this->getFullActionName()
controller_action_predispatch_' . $this->getFullActionName()
postDispatch()方法:
controller_action_postdispatch_' . $this->getRequest()->getRouteName()
controller_action_postdispatch_' . $this->getRequest()->getRouteName()
controller_action_postdispatch_' . $this->getFullActionName()
controller_action_postdispatch_' . $this->getFullActionName()
你观察到将取决于OneStepCheckout模块如何捕捉路线事件。 该getRouteName()
如果你需要的路线和模块来区分基于事件可能是有用的。 你要测试“客户登录”和“客户将被注销”的情景。 虽然predispatch事件是优选的涉及重定向逻辑,你要对复制车/报价+客户会话逻辑平衡您的需求。
Answer 2:
看看@ controller_action_predispatch_checkout_onepage_index
事件
见“前往收银台”事件的Magento?
Answer 3:
为什么你想这样做,那么晚? 根据您要检查什么,你可以将它们添加到购物车后做呢? checkout_cart_save_before