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();