Magento购物车数量不可用
我有这样的观察者Magento购物车数量不可用,magento,Magento,我有这样的观察者 <events> <sales_quote_add_item> <observers> <reservation_observer_order_save_before1> <type>singleton</type> <class>Mageec_Total_Model_Observer&l
<events>
<sales_quote_add_item>
<observers>
<reservation_observer_order_save_before1>
<type>singleton</type>
<class>Mageec_Total_Model_Observer</class>
<method>updatePrice</method>
</reservation_observer_order_save_before1>
</observers>
</sales_quote_add_item>
</events>
我无法获取购物车数量或至少报价它们数量。我认为这是因为这个观察器在cart对象被填充之前执行。那么,在这种情况下,我在哪里可以获得数量?您可以尝试此代码,如果不起作用,请让我通知您
$totalItemsInCart = Mage::helper('checkout/cart')->getItemsCount(); //Total items in cart
if($totalItemsInCart)
{
echo "Total Product in Cart : ".$totalItemsInCart;
$cart = Mage::getModel('checkout/cart')->getQuote()->getData();
echo "Total Quantity In Cart : ".(int)$cart['items_qty'];
}
我自己找到了解决办法。
当我们将第一个产品放入购物车时,运行sales\u quote\u add\u item observer。但它的第一个产品和购物车尚未保存。获取购物车数量返回0的前代码。前面的解决方案是在处理订单之前保存购物车。代码示例如下所示:
public function modifyPrice(Varien_Event_Observer $observer){
$cart = Mage::getSingleton('checkout/cart');
$cart->save();
$quote_item = $observer->getQuoteItem();
if ($quote_item->getProductType() == "virtual"){
$new_price = (float)$quote_item->getProduct()->getPrice();
$quote_item->setOriginalCustomPrice($new_price);
$totalItemsInCart = Mage::helper('checkout/cart')->getItemsCount(); //Total items in cart
Mage::log( "Total Product in Cart : " );
Mage::log( print_r($totalItemsInCart, true) );
$qty = 1;
if($totalItemsInCart)
{
Mage::log( "Total Product in Cart : ".$totalItemsInCart );
$cart = Mage::getModel('checkout/cart')->getQuote()->getData();
Mage::log( "Total Quantity In Cart : ".(int)$cart['items_qty'] );
$qty = (int)$cart['items_qty'];
}
$quote_item->setTotalPrice( $new_price * $qty );
$quote_item->save();
}
return $this;
}
如您所见:
$cart = Mage::getSingleton('checkout/cart');
$cart->save();
这些是解决方案。如果块从未运行,$totalItemsInCart是empty@Portnyagin米哈伊尔:你在购物车上添加了一些产品了吗?尝试打印($totalItemsInCart)并查看收藏。是的,我添加了。print\r($totalItemsInCart)返回0。我可以在手推车里看到产品,非常感谢您的分享。这个问题几个月来一直困扰着我们。
$cart = Mage::getSingleton('checkout/cart');
$cart->save();