0

我无法更新购物车中的小计项目。我创建了带有观察checkout_cart_product_add_after的模块,我可以从项目中获得小计价格:

$subtotal = Mage::getSingleton('checkout/cart')->getQuote()->getSubtotal();

但我不能更新这个,例如:

$subtotal = $subtotal + 100;
Mage::getSingleton('checkout/session')->getQuote()->setSubtotal($subtotal);
Mage::getSingleton('checkout/cart')->getQuote()->setSubtotal($subtotal);
Mage::getSingleton('checkout/session')->getQuote()->save();
Mage::getSingleton('checkout/cart')->getQuote()->save();

编辑

如果我在我的观察者中运行,我print_r($subtotal); exit; 会得到正确的更新小计。在购物车页面中,我仍然有原始小计没有变化。

编辑 2 我正在尝试使用sales_quote_collect_totals_after事件运行 modifySubtotal 函数,但我在购物车页面上看不到更新的小计价格。以下来自 Observer.php 的 modifySubtotal 代码:

public function modifySubtotal(Varien_Event_Observer $observer)
    {

    $session = Mage::getSingleton('checkout/session');
    $quote=$observer->getQuote();
    $subtotal = $quote->getBaseSubtotal();
    $subtotal = $subtotal +123;
    $quote->setBaseSubtotal($subtotal);

    $quote->save();
    $subtotal2 = $quote->getBaseSubtotal();
    //print_r($subtotal2);exit;

}

我将不胜感激任何提示和帮助。

4

3 回答 3

0

您的代码问题在这里:

$session = Mage::getSingleton('checkout/session');
$quote=$observer->getQuote();

这需要

$session = Mage::getSingleton('checkout/session');
$quote=$session->getQuote();

希望这可以帮助

于 2014-04-24T23:23:35.913 回答
0

你应该观察sales_quote_collect_totals_after

于 2013-05-02T20:58:07.403 回答
-1

问题解决了。我覆盖并将Subtotal.phpTax/Module/Sales/Qoute/Total复制到 /app/local/Mage/... 在 545 行附近我计算了我的自定义$subtotal值并设置$item->setRowTotal($subtotal);了这就是全部。

于 2013-05-04T00:27:40.490 回答