2

当我查看事件checkout_onepage_controller_success_action和作品时,我无法获取新创建的订单的 ID。

任何人有任何想法?

使用 magento-1.4.1.0

谢谢

4

4 回答 4

5

事件是这样分派的:

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

因此,要获取最后一个 orderId,只需将您的观察者方法设为:

public function orderSuccessEvent($observer)
{
    $observer->getData('order_ids'));
}
于 2011-07-25T08:19:27.073 回答
3

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

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

感谢他,希望它能奏效。

于 2011-05-06T08:47:49.070 回答
2

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


编辑:这是您的 ID 代码。在你的观察者中:

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

    // do something useful
}
于 2010-09-09T14:15:39.807 回答
0

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

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

将此添加到模块的配置 xml 中,以便在核心 OnepageController 之前调用您的控制器。

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

希望这可以帮助

于 2013-07-30T02:13:53.670 回答