Я пытаюсь получить идентификатор Инкремента Порядка в 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();
Заказ в вашем коде - это идентификатор последнего заказа... как предполагает название функции. Если это не то значение, которое вам нужно, то используйте его для загрузки ордера, а затем используйте getter для:
$order = Mage::getModel('sales/order');
$order->load(Mage::getSingleton('sales/order')->getLastOrderId());
$lastOrderId = $order->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());
, чтобы увидеть, какая информация у вас есть в наличии. Скорее всего, там есть объект заказа, который позволит вам получить идентификатор, который вам нужен.