3

Magento 中是否有观察者来检测结帐过程的开始?这将包括点击页面checkout/onepage/checkout/onestepcheckout/. 如果可能,我想避免覆盖控制器。

4

3 回答 3

10

每个控制器动作都会产生多个目标事件,这些事件在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()如果您需要区分路由和模块,基于 - 的事件可能很有用。您需要测试“客户已登录”和“客户已注销”场景。虽然预调度事件对于涉及重定向的逻辑是首选,但您需要平衡您的需求与重复购物车/报价 + 客户会话逻辑。

于 2013-02-01T22:41:37.333 回答
4

看看@controller_action_predispatch_checkout_onepage_index事件

查看Magento 的“继续结帐”活动?

于 2013-02-01T19:22:34.680 回答
1

为什么要这么晚做?根据您要检查的内容,您可以在将它们添加到购物车后进行吗?checkout_cart_save_before

于 2013-02-01T19:51:39.037 回答