检索Magento中观察者内当前签出会话的order_id

检索Magento中观察者内当前签出会话的order_id,magento,magento-1.5,Magento,Magento 1.5,我正在尝试检索刚刚在签出过程中创建的订单的order\u id(单击下订单按钮后) 我有一位观察员在事件后收听销售\订单\地点。我正在尝试使用以下代码检索订单id: $orderId = Mage::getSingleton('checkout/session')->getLastRealOrderId(); 它返回上一个订单的order\u id,而不是在签出期间刚刚创建的当前订单。如果我使用这样的东西: $order = Mage::getModel('sales/order');

我正在尝试检索刚刚在签出过程中创建的订单的
order\u id
(单击下订单按钮后)

我有一位观察员在事件后收听
销售\订单\地点。我正在尝试使用以下代码检索
订单id

$orderId = Mage::getSingleton('checkout/session')->getLastRealOrderId();
它返回上一个订单的
order\u id
,而不是在签出期间刚刚创建的当前订单。如果我使用这样的东西:

$order = Mage::getModel('sales/order');
$order->load(Mage::getSingleton('sales/order')->getLastOrderId());
$lastOrderId = $order->getIncrementId();
我没有获得
订单id

我尝试这样做的原因是,在最初创建订单时,将所有订单状态设置为hold或pending,当用户进行成功交易时,我将把状态更改为PROCESSION


如何在观察者中为正在进行的签出会话检索当前的
订单id

如果您检查代码并对正在使用的事件进行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));
然后,您会看到order对象被传递给事件,在您的observer方法中,您可以这样做

public function myCreateOrderAfterObs($observer){
    $order = $observer->getEvent()->getOrder();
    $orderEntityId = $order->getId(); 
    $orderIncrementId = $order->getIncrementId();
    //print_r($order->getData());
}
您可以请求传递给observer的所有内容,我建议您只使用已传递的对象,而不要使用某些全局或会话项,因为它们可能在您的observer上下文中或在调用observer时不可用