我发现Magento事件调度是一个非常令人沮丧的领域.我认为很多挫折感像往常一样,缺乏文档.
我希望我的代码可以在访问者浏览网站的各个阶段触发.所以我在Mage :: dispatchEvent中进行了一些调试,然后我浏览了网站以查看每个阶段触发的事件.有很多!
我感兴趣的两个地方是:
当访问者选择了帐单地址并转到结帐流程的下一个阶段时.
当用户成功下订单时
对于帐单地址一,我看到被解雇的事件看起来相关:
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返回网站时?如果是这样,那么如果用户在完成付款后没有返回该问题会产生什么问题.
谢谢你的帮助.
可悲的是,我注意到checkout_submit_all_after
Paypal Express订单没有触发.
如果没有修改Paypal模型来添加它(或者可能挂钩他们可能触发的事件 - 我还没有检查过),我认为checkout_onepage_controller_success_action
可能真的是唯一可以完全依靠每种类型订单的事件.
在调用操作之前将触发predispatch事件,postdispatch事件将在操作完成后触发.因此,如果您需要知道操作的结果是什么,则应使用postdispatch事件.
对于成功订单,请检查checkout_submit_all_after事件.
如果您还没有看到它,https://www.nicksays.co.uk/magento-events-cheat-sheet-1-9/,是Magento活动的便捷参考.