当我查看事件checkout_onepage_controller_success_action
和作品时,我无法获取新创建的订单的 ID。
任何人有任何想法?
使用 magento-1.4.1.0
谢谢
当我查看事件checkout_onepage_controller_success_action
和作品时,我无法获取新创建的订单的 ID。
任何人有任何想法?
使用 magento-1.4.1.0
谢谢
事件是这样分派的:
Mage::dispatchEvent('checkout_onepage_controller_success_action', array('order_ids' => array($lastOrderId)));
因此,要获取最后一个 orderId,只需将您的观察者方法设为:
public function orderSuccessEvent($observer)
{
$observer->getData('order_ids'));
}
这是 Branko Ajzele 提供的答案,我刚刚成功测试:
$order = new Mage_Sales_Model_Order();
$incrementId = Mage::getSingleton('checkout/session')->getLastRealOrderId();
$order->loadByIncrementId($incrementId);
感谢他,希望它能奏效。
该事件可能在操作本身执行之前被调用。可以sales_order_save_after
改用吗?
编辑:这是您的 ID 代码。在你的观察者中:
public function setLinkStatus($observer) {
$order = $observer->getEvent()->getOrder();
$id = $order->getId();
// do something useful
}
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>
希望这可以帮助