2015-02-02 1 views
0

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

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

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 журнал это ошибки на Еогеасп:

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

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

Noti с: Попытка получить свойство необъектного

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.

Update

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

ответ

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

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