Получить идентификатор приращения заказа в Magento - PullRequest
16 голосов
/ 04 февраля 2010

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

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

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

Ошибка гласит:

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

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

Ответы [ 10 ]

11 голосов
/ 06 февраля 2010

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

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

$orderId = $this->getOrderId();

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

$orderId = Mage::getSingleton('checkout/session')->getLastRealOrderId();
7 голосов
/ 04 февраля 2010

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

$order = Mage::getModel('sales/order');
$order->load(Mage::getSingleton('sales/order')->getLastOrderId());
$lastOrderId = $order->getIncrementId();
5 голосов
/ 22 мая 2013

Это будет отлично работать, сейчас я запускаю этот модуль в моем модуле.

$last_order_increment_id = Mage::getModel("sales/order")->getCollection()->getLastItem()->getIncrementId();

Надеюсь, это поможет, спасибо. :)

4 голосов
/ 04 февраля 2010

Ваш звонок на

Mage::getSingleton('sales/order')

не возвращает объект. Попробуйте

var_dump(Mage::getSingleton('sales/order'));

для подтверждения.

Я недавно не углублялся в код проверки, но я уверен, что это потому, что sales/order выполнит заказ. Как только заказ размещен, он больше не выполняется.

«Правильный» способ сделать это - создать наблюдателя для одного из событий, которые Magento запускает во время проверки.

checkout_onepage_controller_success_action
Событие

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

Есть краткое объяснение того, как это сделать на вики (для другого события)

Как только вы настроите свое событие и ответите, выполните

$event = $observer->getEvent();
var_dump($event->getData());

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

3 голосов
/ 21 мая 2013

Если вы находитесь в режиме администратора - попробуйте это:

$orderModel = Mage::getModel('sales/order'); $orders = $orderModel->getCollection()->setOrder('increment_id', 'DESC')->setPageSize(1)->setCurPage(1); $orderId = $orders->getFirstItem()->getIncrementId();

3 голосов
/ 27 сентября 2011

Мне пришлось использовать ...

$_order = Mage::getModel('sales/order')->loadByIncrementId($this->getOrderId());

Пока в шаблоне success.phtml.Вместо load () я использовал loadByIncrementId - тогда мой объект заказа больше не был пустым.

2 голосов
/ 08 августа 2014

Вы можете получить идентификатор приращения, используя этот фрагмент кода:

$orderId = 12;    
$order = Mage::getModel('sales/order')->load($orderId);
$Incrementid = $order->getIncrementId();

Теперь вы можете сделать эхо для переменной $ Incrementid и увидеть идентификатор приращения.

Надеюсь, это поможет.

2 голосов
/ 08 декабря 2010

getRealOrderId() возвращает номер заказа, представленный в сетках данных.getId() вернет внутренний идентификатор строки в базе данных, который вам, вероятно, не нужен.

0 голосов
/ 18 февраля 2016
$lastOrderIncrementId = Mage::getModel("sales/order")->getCollection()->getLastItem()->getIncrementId();
0 голосов
/ 24 мая 2015
$shipmentID = $shipment->increment_id;

$order   = $shipment->getOrder();
$orderID = $order->increment_id; 
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...