3

在事件下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

1 回答 1

5

事件sales_order_save_after有点棘手。第一次触发时 Order 尚未提交给 DB,更重要的是 - 它实际上还没有设置 State 和 Status。

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

  1. sales_order_payment_place_endMage_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方法中的最后一个事件 - 在它被调度的那一刻,订单肯定会拥有所有数据,并且您可以确定在订单创建过程中没有错误。

于 2012-09-12T10:27:46.947 回答