Magento:获取订单ID,收听事件checkout_onepage_controller_success_action

时间:2010-09-09 13:25:55

标签: events module magento-1.4

当我查看事件checkout_onepage_controller_success_action并且有效时,我无法获得新创建的订单的ID。

任何人都有任何想法??

使用magento-1.4.1.0

由于

4 个答案:

答案 0 :(得分:5)

事件的发送方式如下:

Mage::dispatchEvent('checkout_onepage_controller_success_action', array('order_ids' => array($lastOrderId)));

所以要获得最后一个orderId,只需按照以下方式创建观察者方法:

public function orderSuccessEvent($observer)
{
    $observer->getData('order_ids'));
}

答案 1 :(得分:3)

这是Branko Ajzele提供的答案,我刚刚成功测试:

        $order = new Mage_Sales_Model_Order();
    $incrementId = Mage::getSingleton('checkout/session')->getLastRealOrderId();
    $order->loadByIncrementId($incrementId);

感谢他并希望它能够发挥作用。

答案 2 :(得分:2)

该事件可能在动作本身执行之前被调用。您可以使用sales_order_save_after吗?


编辑:这是您的身份证号码。在你的观察者中:

public function setLinkStatus($observer) {
    $order = $observer->getEvent()->getOrder(); 
    $id = $order->getId();

    // do something useful
}

答案 3 :(得分:0)

Magento 1.4.1版中的Onepage Checkout控制器未更新为具有可获取订单ID的功能,因此您无法获得事件观察者的订单对象和数据。要在Magento 1.4.1中使用它,只需使用必要的功能更新OnepageController即可。

最好的方法是创建自己的模块并覆盖核心控制器。

在模块的config xml中添加它,以便在核心OnepageController之前调用控制器。

<frontend><routers><checkout><use>standard</use><args><modules><MyCompany_MyModule before="Mage_Checkout">MyCompany_MyModule</MyCompany_MyModule></modules></args></checkout></routers></frontend>

希望这有帮助