2011-10-18 3 views
0

チェックアウト処理中に(注文ボタンをクリックした直後に)作成された注文のorder_idを取得しようとしています。Magentoのオブザーバ内で現在のチェックアウトセッションのorder_idを取得しています

私はオブザーバーにsales_order_place_afterイベントを聞いています。私はこのコードを使用してorder_idを取得しようとしています:

$orderId = Mage::getSingleton('checkout/session')->getLastRealOrderId(); 

前回のためだけではなく、チェックアウト時に作成された現在の注文のorder_idを返します。私が次のようなものを使用した場合:

$order = Mage::getModel('sales/order'); 
$order->load(Mage::getSingleton('sales/order')->getLastOrderId()); 
$lastOrderId = $order->getIncrementId(); 

私はorder_idを取得しません。

私がこれをやろうとしているのは、最初に作成されたときにすべての注文ステータスを保留または保留に設定し、ユーザーがトランザクションを成功させたときにステータスを処理に変更することです。

オブザーバーで進行中のチェックアウトセッションの現在のorder_idを取得するにはどうすればよいですか?

答えて

1

あなたが使用しているイベントのコードとgrepを調べる場合:

、あなたはあなたが行うことができます順序オブジェクトがイベントにして、オブザーバメソッドに渡されていることがわかり
grep 'sales_order_place_after' app/code -rsn 
app/code/core/Mage/Sales/Model/Order.php:1074:  Mage::dispatchEvent('sales_order_place_after', array('order'=>$this)); 

public function myCreateOrderAfterObs($observer){ 
    $order = $observer->getEvent()->getOrder(); 
    $orderEntityId = $order->getId(); 
    $orderIncrementId = $order->getIncrementId(); 
    //print_r($order->getData()); 
} 

オブザーバーに渡されるすべてのものをリクエストすることができます。オブザーバーのコンテキストやオブザーバーが呼び出されたときに使用できないため、渡されたオブジェクトだけを使用することをお勧めします。

+0

ありがとうございました。それは魅力のように働いた。 – Nithin

関連する問題