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 がまだ設定されていません。

ステータスを取得したい場合は、より適した他のイベントがあります。

  1. sales_order_payment_place_endMage_Sales_Model_Order_Payment::place- これは、終了直後のメソッドでトリガーさ$order->setStateれます。place関数自体は、注文保存トランザクション処理の afterCommit コールバックです。

  2. sales_order_save_commit_after- これは、すべての afterCommit が処理されたときにトリガーされます

  3. sales_model_service_quote_submit_success- これはMage_Sales_Model_Service_Quote::submitOrderメソッドの最後のイベントです - ディスパッチされた時点で、注文には確実にすべてのデータが含まれており、注文の作成中にエラーがなかったことを確認できます。

于 2012-09-12T10:27:46.947 に答える