我正在尝试在success.phtml页面上获取Magento中的订单增量ID,以便我可以将其用于联盟会员跟踪。
我正在使用以下代码,但它在第二行给出错误;
$order = Mage::getSingleton('sales/order')->getLastOrderId();
$lastOrderId = $order->getIncrementId();
错误如下:
致命错误:在第34行的非对象上调用成员函数getIncrementId():$ LastOrderId = $ order-> getIncrementId();
我想知道是否有人对如何获得订单增量ID有任何想法?这是管理员中看到的参考号,通常类似于:#1000123
答案 0 :(得分:11)
如果您在结帐成功页面上专门执行此操作 - 在success.phtml中 - 那么获取订单增量ID的代码已在模板中提供,因为它会显示给客户。
您只需要以下内容:
$orderId = $this->getOrderId();
请注意,这不适用于其他网页,因此,您需要使用:
$orderId = Mage::getSingleton('checkout/session')->getLastRealOrderId();
答案 1 :(得分:7)
$代码中的订单是最后一个订单ID ...正如函数名称所暗示的那样。如果这不是您想要的值,那么使用它来加载订单,然后使用getter:
$order = Mage::getModel('sales/order');
$order->load(Mage::getSingleton('sales/order')->getLastOrderId());
$lastOrderId = $order->getIncrementId();
答案 2 :(得分:5)
这将完美地运行,我现在在我的模块中运行这个。
$last_order_increment_id = Mage::getModel("sales/order")->getCollection()->getLastItem()->getIncrementId();
希望它有助于谢谢。 :)
答案 3 :(得分:4)
致电
Mage::getSingleton('sales/order')
未返回对象。试试
var_dump(Mage::getSingleton('sales/order'));
确认。
我最近没有参加结帐代码,但我很确定这是因为sales/order
会让您获得正在进行的订单。订单下达后,它就不再进行了。
执行此操作的“正确”方法是为结帐时Magento触发的其中一个事件创建观察者。在
checkout_onepage_controller_success_action
假设您没有对结帐流程进行太多自定义,那么事件就足够了。
关于如何在the Wiki(针对不同的事件)执行此操作的简要说明
完成事件设置和响应后,请执行
$event = $observer->getEvent();
var_dump($event->getData());
查看您提供的信息类型。有可能在那里有一个订单对象,可以让你获得你想要的ID。
答案 4 :(得分:3)
我不得不使用......
$_order = Mage::getModel('sales/order')->loadByIncrementId($this->getOrderId());
在success.phtml模板中。而不是load()我使用了loadByIncrementId - 然后我的订单对象不再是空的。
答案 5 :(得分:3)
如果您处于管理模式 - 请尝试:
$orderModel = Mage::getModel('sales/order');
$orders = $orderModel->getCollection()->setOrder('increment_id', 'DESC')->setPageSize(1)->setCurPage(1);
$orderId = $orders->getFirstItem()->getIncrementId();
答案 6 :(得分:2)
getRealOrderId()
似乎返回数据网格中显示的订单号。 getId()
将返回数据库中您可能不想要的行的内部标识。
答案 7 :(得分:2)
您可以使用此代码段获取增量ID:
$orderId = 12;
$order = Mage::getModel('sales/order')->load($orderId);
$Incrementid = $order->getIncrementId();
现在,您可以对$ Incrementid变量进行回显,并查看增量ID。
我希望这会有所帮助。
答案 8 :(得分:0)
$lastOrderIncrementId = Mage::getModel("sales/order")->getCollection()->getLastItem()->getIncrementId();
答案 9 :(得分:-1)
$shipmentID = $shipment->increment_id;
$order = $shipment->getOrder();
$orderID = $order->increment_id;