Невозможно загрузить заказ в контроллере клиента в Magento

0

Я работаю над созданием новой интеграции платежей в Magento, и мне нужно загрузить текущий порядок внутри моего контроллера, поэтому я не могу получить такие данные, как firstname, lastname, email и т.д., Поэтому я могу сделать сообщение в API шлюза paymen,

В качестве примера моей проблемы у меня есть действие:

public function testAction() { 
    echo "<h1>" . Mage::getSingleton('checkout/session')->getLastRealOrderId() . "</h1>";     
$_order = Mage::getModel('sales/order')->loadByIncrementId(Mage::getSingleton('checkout/session')->getLastRealOrderId());   
foreach ($_order->_data as $key => $value) {    echo "$key: $value<br />";}
}

Проверка моей системы magento регистрирует ошибки в foreach:

Примечание. Попытка получить свойство не объекта

Если я создам действие:

Примечание. Попытка получить свойство не объекта

public function testAction() { 
$this->loadLayout();
    $block = $this->getLayout()->createBlock('Mage_Core_Block_Template',test, array('template' => 'test/test.phtml'));        
    $this->getLayout()->getBlock('content')->append($block);
    $this->renderLayout();
}

а затем создайте представление test.phtml с тем же кодом, что и у контроллера:

echo "<h1>" . Mage::getSingleton('checkout/session')->getLastRealOrderId() . "</h1>";     
$_order = Mage::getModel('sales/order')->loadByIncrementId(Mage::getSingleton('checkout/session')->getLastRealOrderId());   
foreach ($_order->_data as $key => $value) {    echo "$key: $value<br />";}

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

Я новичок в Magento, поэтому я уверен, что мне не хватает чего-то действительно очевидного, но я был бы признателен за любую помощь, чтобы получить возможность загрузить объект заказа внутри контроллера.

В качестве дополнительной информации в случае, если это имеет какое-либо отношение к проблеме, мой контроллер расширяет Mage_Core_Controller_Front_Action.

Обновить

Mage :: getSingleton ('checkout/session') → getLastRealOrderId() возвращает неверный идентификатор заказа. Как это отражено внутри тега. Проблема заключается в том, что объект заказа не загружен, просто создается новый экземпляр.

Теги:
magento

2 ответа

0
Лучший ответ

Кажется, мне нужно было использовать функцию getData(), чтобы получить данные из заказа после того, как я их загрузил:

echo "<h1>" . Mage::getSingleton('checkout/session')->getLastRealOrderId() . "</h1>";     
$_order = Mage::getModel('sales/order')->loadByIncrementId(Mage::getSingleton('checkout/session')->getLastRealOrderId());   
$data = $order->getData();
foreach ($data as $key => $value) {    echo "$key: $value<br />";}
0

Метод getLastRealOrderId возвращает пустой, если клиент никогда не заканчивает заказ.

Я думаю, что лучше загружать заказы клиента, используя:

$customer = Mage::getSingleton('customer/session')->getCustomer();
$customer_email = $customer->getEmail();
$_order = Mage::getModel('sales/order')->load($customer_email, 'customer_email');
  • 0
    Извините, я должен был упомянуть, что вернул верный идентификатор заказа. Порядок просто не помещается в объект заказа функцией загрузки по приращению.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню