我无法更新购物车中的小计项目。 我使用observe 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;
}
我会感激任何提示和帮助。
答案 0 :(得分:0)
您应该观察sales_quote_collect_totals_after
。
答案 1 :(得分:0)
您的代码出现问题:
$session = Mage::getSingleton('checkout/session');
$quote=$observer->getQuote();
这需要
$session = Mage::getSingleton('checkout/session');
$quote=$session->getQuote();
希望这有帮助
答案 2 :(得分:-1)
问题解决了。我覆盖并将 Subtotal.php 从 Tax / Module / Sales / Qoute / Total 复制到/ app / local / Mage / ...在545行附近我计算了我的自定义{ {1}}值并设置$subtotal
这就是全部。