我正在Magento 1.8上创建支付网关模块 在我的Model代码中,我正在尝试以正确的格式构建一个字符串,以便为SOAP请求做好准备。
我需要收集订单产品,我正在使用以下代码:
$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()
,我似乎正确地返回了项目数。
我只想返回一个项目数组,但实际上,我需要的只是名称,价格和数量,所以如果有另一种方法可以返回该信息,我会对它开放。
答案 0 :(得分: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