当我查看事件checkout_onepage_controller_success_action
并且有效时,我无法获得新创建的订单的ID。
任何人都有任何想法??
使用magento-1.4.1.0
由于
答案 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>
希望这有帮助