订单成功发送时总是会发送Magento事件?

时间:2011-11-15 11:55:24

标签: magento

我发现Magento事件调度是一个非常令人沮丧的领域。我认为很多挫折感像往常一样,缺乏文档。

我希望我的代码能够在访问者浏览网站的各个阶段触发。所以我在Mage :: dispatchEvent中进行了一些调试,然后我浏览了网站以查看每个阶段触发的事件。有很多!

我感兴趣的两个地方是:

  • 当访问者选择了帐单邮寄地址并进入结帐流程的下一阶段时。

  • 当用户成功下订单时

对于帐单邮寄地址1,我看到被解雇的事件看起来相关:

controller_action_predispatch_checkout_onepage_saveBilling
controller_action_postdispatch_checkout_onepage_saveBilling

'pre'和'post'告诉我实际上有一个'checkout_onepage_saveBilling'事件,但是没有,所以我的第一个问题是为什么'pre'和'post'?

对于成功的订单,看起来不错的事件是:

checkout_onepage_controller_success_action
checkout_multishipping_controller_success_action

我的第二个问题是,所有付款方式会触发这些事件吗?例如,如果使用Google Checkout或PayPal(标准重定向),事件是否会触发,以及在什么时候?从PayPal返回网站时?如果是这样,那么如果用户在完成付款后没有返回该怎么回事。

感谢您的帮助。

2 个答案:

答案 0 :(得分:15)

可悲的是,我注意到checkout_submit_all_after没有触发Paypal Express订单。

如果没有修改Paypal模型来添加它(或者可能挂钩他们可能触发的事件 - 我还没有检查过),我认为checkout_onepage_controller_success_action可能真的是你唯一可以信赖的事件对于每种类型的订单。

答案 1 :(得分:6)

在调用操作之前将触发predispatch事件,postdispatch事件将在操作完成后触发。因此,如果您需要知道操作的结果是什么,则应使用postdispatch事件。

对于成功订单,请检查checkout_submit_all_after事件。

如果您还没有看到它,https://www.nicksays.co.uk/magento-events-cheat-sheet-1-9/,是Magento事件的便捷参考。