Получите идентификатор инкремента порядка в Magento

Я пытаюсь получить идентификатор Инкремента Порядка в Magento на success.phtml странице так, чтобы я мог использовать это для отслеживания филиала.

Я использую следующий код, но он дает ошибку на второй строке;

$order = Mage::getSingleton('sales/order')->getLastOrderId();
$lastOrderId = $order->getIncrementId();

Ошибочные чтения:

Фатальная ошибка: Звоните в функцию членства getIncrementId () на необъекте на строке 34: $LastOrderId = $order-> getIncrementId ();

Я задавался вопросом, есть ли у кого-либо какие-либо идеи о том, как получить идентификатор Инкремента Порядка? Это - ссылочный номер, замеченный в администраторе, обычно что-то как: № 1000123

16
задан Artemix 5 December 2012 в 09:35
поделиться

3 ответа

Если вы делаете это специально на странице успешного оформления заказа - в success.phtml - тогда код для получения идентификатора увеличения заказа уже доступен в шаблон, поскольку он отображается для покупателя.

Вам просто понадобится следующее:

$orderId = $this->getOrderId();

Обратите внимание, что это не будет работать на других страницах, поэтому для них вам нужно будет использовать:

$orderId = Mage::getSingleton('checkout/session')->getLastRealOrderId();
12
ответ дан 30 November 2019 в 16:42
поделиться

Заказ в вашем коде - это идентификатор последнего заказа... как предполагает название функции. Если это не то значение, которое вам нужно, то используйте его для загрузки ордера, а затем используйте getter для:

$order = Mage::getModel('sales/order');
$order->load(Mage::getSingleton('sales/order')->getLastOrderId());
$lastOrderId = $order->getIncrementId();
7
ответ дан 30 November 2019 в 16:42
поделиться

Ваш вызов

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());

, чтобы увидеть, какая информация у вас есть в наличии. Скорее всего, там есть объект заказа, который позволит вам получить идентификатор, который вам нужен.

4
ответ дан 30 November 2019 в 16:42
поделиться
Другие вопросы по тегам:

Похожие вопросы: