Я пытаюсь получить Id Increment Order в Magento на странице success.phtml, чтобы использовать это для отслеживания партнерских отношений.
Я использую следующий код, но он дает ошибку во второй строке;
$order = Mage::getSingleton('sales/order')->getLastOrderId(); $lastOrderId = $order->getIncrementId();
Ошибка:
Неустранимая ошибка: вызов функции-члена getIncrementId () для не объекта в строке 34: $ LastOrderId = $ order-> getIncrementId ();
Мне было интересно, есть ли у кого-нибудь идеи о том, как получить Идентификатор увеличения заказа? Это ссылочный номер, видимый в админе, обычно что-то вроде: # 1000123
Если вы специально делаете это на странице успешной проверки – в файле success.phtml – тогда код, чтобы получить идентификатор инкремента заказа, уже доступен в шаблоне, так как он отображается клиенту.
Вам просто нужно следующее:
$orderId = $this->getOrderId();
Обратите внимание, что это не будет работать на других страницах, поэтому для них вам нужно будет использовать:
$orderId = Mage::getSingleton('checkout/session')->getLastRealOrderId();
$ order в вашем коде – это последний идентификатор заказа … как следует из названия функции. Если это не значение, которое вы хотите, используйте его для загрузки заказа, а затем используйте геттер:
$order = Mage::getModel('sales/order'); $order->load(Mage::getSingleton('sales/order')->getLastOrderId()); $lastOrderId = $order->getIncrementId();
Это будет отлично работать, теперь я запускаю этот модуль в своем модуле.
$last_order_increment_id = Mage::getModel("sales/order")->getCollection()->getLastItem()->getIncrementId();
Надеюсь, это поможет. 🙂
Ваш звонок
Mage::getSingleton('sales/order')
не возвращает объект. Пытаться
var_dump(Mage::getSingleton('sales/order'));
подтвердить.
Я недавно не нырнул в код проверки, но я уверен, что это потому, что sales/order
приведут к выполнению заказа. Как только заказ будет размещен, он больше не выполняется.
«Правильным» способом сделать это было бы создание наблюдателя для одного из событий, которые Magento срабатывает во время проверки.
checkout_onepage_controller_success_action
событие должно быть достаточным, если предположить, что вы не слишком много настраивали процесс оформления заказа.
Есть краткое объяснение того, как это сделать на Wiki (для другого события)
После того, как вы получите настройки своего мероприятия и ответите, сделайте
$event = $observer->getEvent(); var_dump($event->getData());
чтобы узнать, какую информацию у вас имеется. Скорее всего, есть объект заказа, который позволит вам получить идентификатор, который вам нужен.
Мне пришлось использовать …
$_order = Mage::getModel('sales/order')->loadByIncrementId($this->getOrderId());
В шаблоне success.phtml. Вместо load () я использовал loadByIncrementId – тогда мой объект заказа больше не пуст.
Если вы находитесь в режиме администратора – попробуйте следующее:
$orderModel = Mage::getModel('sales/order'); $orders = $orderModel->getCollection()->setOrder('increment_id', 'DESC')->setPageSize(1)->setCurPage(1); $orderId = $orders->getFirstItem()->getIncrementId();
getRealOrderId()
возвращает номер заказа, представленный в сетях данных. getId()
вернет внутренний идентификатор строки в базе данных, чего вы, вероятно, не хотите.
Вы можете получить идентификатор инкремента, используя этот фрагмент кода:
$orderId = 12; $order = Mage::getModel('sales/order')->load($orderId); $Incrementid = $order->getIncrementId();
Теперь вы можете сделать эхо переменной $ Incrementid и увидеть идентификатор инкремента.
Надеюсь, это поможет.
$lastOrderIncrementId = Mage::getModel("sales/order")->getCollection()->getLastItem()->getIncrementId();
$shipmentID = $shipment->increment_id; $order = $shipment->getOrder(); $orderID = $order->increment_id;