2012-09-12 179 views
3

這裏拿到的訂單狀態是我在做什麼,如何Magento在觀察者

下此事件:sales_order_save_after

我有觀察者一些代碼來獲取訂單狀態。

public function saveBookingInfoFromOrder(Varien_Event_Observer $observer){     
     $order = $observer->getEvent()->getOrder(); 

     //$last_orderid = $order->getIncrementId(); 

     $last_orderid = $order->getId(); 
     $order_status = $order->getStatus(); 
} 

但訂單狀態不會來,有什麼建議嗎?在此先感謝

回答

4

事件sales_order_save_after是有點棘手。第一次觸發順序尚未提交給數據庫,更重要的是,它實際上沒有設置狀態和狀態。

如果你想獲得的狀態,還有其他的活動更適合你:

  1. sales_order_payment_place_end - 這是在Mage_Sales_Model_Order_Payment::place方法$order->setState完成後立即觸發。 place函數本身是一個用於訂單保存事務處理的afterCommit回調函數。

  2. sales_order_save_commit_after - 當所有afterCommits處理

  3. sales_model_service_quote_submit_success這是觸發 - 這是Mage_Sales_Model_Service_Quote::submitOrder方法的最後一場比賽 - 此刻它的派出秩序必將擁有所有的數據,你可以肯定在創建訂單時沒有錯誤。

+0

1 - 我不能用這一個:sales_order_payment_place_end因爲這僅包含支付信息,我想 –

+0

2- sales_model_service_quote_submit_success此事件帶來的成功對我來說,你是絕對正確的我提到的事件沒有得到訂單狀態爲它當時不在數據庫中。所以我改變了這個事件,它工作。謝謝 –