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

Asi*_*hhh 3 events observers magento 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();
}
Run Code Online (Sandbox Code Playgroud)

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

Sla*_*den 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方法中的最后一个事件- 在发送它的那一刻,Order肯定会拥有所有数据,并且您可以确保在创建订单时没有错误.