Magento如何在观察者中获得订单状态

时间:2012-09-12 07:46:28

标签: events magento sales observers orders

这就是我在做什么,

在此事件下: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();
}

但是订单状态还没有到来,有什么建议吗?提前谢谢

1 个答案:

答案 0 :(得分:5)

事件sales_order_save_after有点棘手。第一次触发Order还没有提交给DB,更多的是它 - 它实际上还没有设置状态和状态。

如果您想获得状态,还有其他更适合您的活动:

  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方法中的最终事件 - 在发送时,订单肯定会包含所有数据,并且您可以确定在此过程中没有错误订单创建。