Я работаю над созданием новой интеграции платежей в 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() возвращает неверный идентификатор заказа. Как это отражено внутри тега. Проблема заключается в том, что объект заказа не загружен, просто создается новый экземпляр.
Кажется, мне нужно было использовать функцию 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 />";}
Метод getLastRealOrderId возвращает пустой, если клиент никогда не заканчивает заказ.
Я думаю, что лучше загружать заказы клиента, используя:
$customer = Mage::getSingleton('customer/session')->getCustomer();
$customer_email = $customer->getEmail();
$_order = Mage::getModel('sales/order')->load($customer_email, 'customer_email');