2014-02-06 4 views
1

Я создаю модуль платежного шлюза на 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() Кажется, что я правильно возвращаю количество элементов.

Я бы просто хотел вернуть массив элементов, но на самом деле все, что мне нужно, это имя, цена и количество, поэтому, если есть альтернативный метод возврата этой информации, я открыт для нее.

ответ

1

Я столкнулся с той же проблемой, только сейчас.

$cartItems = Mage::getSingleton('checkout/session')->getQuote()->getAllItems(); 
foreach ($cartItems as $item) { 
    echo Mage::getModel('catalog/product')->load($item->getProduct()->getId())->getShortDescription(); 
    echo $item->getPrice(); 
    echo $item->getSku(); 
    echo $item->getQty(); 
} 

Найдено в: http://www.kathirvel.com/magento-custom-attributes-of-products-in-the-cart/

Если не работает, то это ваше событие, позволяя вниз. Если вы запускаете его через контроллер, он работает отлично.

Использование версии Magento версии 1.9.0.1

Смежные вопросы