Я создаю модуль платежного шлюза на Magento 1.8
В моем коде модели я пытаюсь построить строку в правильном формате, готовом для запроса SOAP.Модуль оплаты Magento: получение всех товаров в корзине
мне нужно собрать продукты заказ, и я использую следующий код:
$order_string = "";
$quote = Mage::getSingleton('checkout/session')->getQuote();
$items = $quote->getAllVisibleItems();
foreach ($items as $item) {
$order_string .= "prod=" . $item->getName() . ",item_amount=" . $item->getPrice() . 'x' . $item->getQty() . ';';
}
Проблема я столкнулся в том, что переменная $items
всегда пусто. Я пробовал много вариантов получения этой информации:
$items = Mage::getSingleton('checkout/cart')->getAllItems();
$items = Mage::helper('checkout/cart')->getAllItems();
$items = Mage::helper('checkout/cart')->getCart()->getAllItems();
$items = Mage::getSingleton('checkout/session')->getQuote()->getAllItems();
и т.д.
Если я пытаюсь и Mage::log
любой из этой информации, я столкнулся с ошибкой:
User Error: Some transactions have not been committed or rolled back in /Users/[Username]/Sites/[Site Name]/lib/Varien/Db/Adapter/Pdo/Mysql.php on line 3865
Если я использую ->getItemsCount();
как суффикс вместо getAllItems()
или getAllVisibleItems()
Кажется, что я правильно возвращаю количество элементов.
Я бы просто хотел вернуть массив элементов, но на самом деле все, что мне нужно, это имя, цена и количество, поэтому, если есть альтернативный метод возврата этой информации, я открыт для нее.