结帐开始观察员

Ste*_*ins 3 observers magento

Magento有观察员来检测结账过程的开始吗?这包括点击页面checkout/onepage/checkout/onestepcheckout/.如果可能的话,我想避免重写控制器.

ben*_*rks 9

每个控制器操作都将导致多个目标事件在Mage_Core_Controller_Varien_Action(链接)中触发,这是所有操作控制器的超类.这些事件不同地涉及从模块路由器配置+控制器路径+动作派生的"完整动作名称",以及正在请求的路由名称.

在标准onepage checkout的情况下,完整的操作名称是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事件是涉及重定向的逻辑的首选,但您需要平衡您的需求与重复购物车/报价+客户会话逻辑.