2011-11-15 65 views
7

我發現Magento事件調度是一個相當令人沮喪的領域。像往常一樣,我想很多挫折是由於缺乏文檔。訂單成功發貨後,Magento事件總是會發出?

我希望我的代碼在訪問者遍歷一個網站時在各個階段被觸發。所以我在Mage :: dispatchEvent中進行了一些調試,並且我瀏覽了該站點以查看每個階段觸發了哪些事件。有很多!

兩個地方我感興趣的是:

  • 當訪問者選擇了帳單地址轉移到結帳過程的下一階段。

  • 當用戶成功下訂單

帳單地址之一,我看到被解僱,看起來相關的事件是:

controller_action_predispatch_checkout_onepage_saveBilling 
controller_action_postdispatch_checkout_onepage_saveBilling 

「前」和「帖子'建議我實際上有一個'checkout_onepage_saveBilling'事件,但沒有,所以我的第一個問題是爲什麼'pre'和'post'?

對於成功的訂單,好看的事件是:

checkout_onepage_controller_success_action 
checkout_multishipping_controller_success_action 

我的第二個問題是將這些事件的所有付款方式被解僱?例如,如果使用Google Checkout或PayPal(標準重定向),事件是否會在什麼時候觸發?從PayPal返回網站時?如果是這樣,那麼會乞求問題,如果用戶在完成付款後沒有返回。

感謝您的任何幫助。

+0

你好。這已得到回答嗎?爲了讓您接受以下答案之一,還有什麼可以提供的嗎? – Morgon

回答

6

predispatch事件將在調用動作之前觸發,postdispatch事件將在動作完成後觸發。所以如果你需要知道這個動作的結果是什麼,你應該使用postdispatch事件。

對於成功的訂單,請檢出checkout_submit_all_after事件。

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

13

不幸的是,我注意到checkout_submit_all_after不支付貝寶快遞訂單。

對修改PayPal模型添加此(或者可能掛鉤到他們可能觸發的事件 - 我還沒有檢查過),我認爲checkout_onepage_controller_success_action可能真的是唯一的事件,你可以絕對指望每種類型訂單。

+0

嗨,你有沒有解決與PayPal Express的問題? –

相關問題