结帐开始观察员

时间:2013-02-01 18:12:30

标签: magento observers

Magento是否有观察员检测结帐流程的开始?这包括点击页面checkout/onepage/checkout/onestepcheckout/。如果可能的话,我想避免重写控制器。

3 个答案:

答案 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事件

请参阅'Proceed to Checkout' Event for Magento?

答案 2 :(得分:1)

你为什么要这么做呢?根据您检查的内容,您可以在将它们添加到购物车后执行此操作? checkout_cart_save_before