我需要从购物车中删除一件商品。
我使用保存购物车后触发的checkout_cart_add_product_complete事件。
然后我用:
$quote = Mage::getSingleton('checkout/session')->getQuote();
$allQuoteItems = $quote->getAllItems();
foreach ($allQuoteItems as $_item) {
$_product = $_item->getProduct();
if ($_product->getIsPreparedToDelete()) {
$quote->removeItem($_item->getId());
}
}
$quote->save();
但该项目仍在那里......
我不知道我可以使用哪个事件 - 或者是否真的可以在购物车中删除某个项目(我还添加了相同的活动项目。)。
感谢。
答案 0 :(得分:0)
看看@ Magento - remove one quantity from cart
$cartHelper = Mage::helper('checkout/cart');
$items = $cartHelper->getCart()->getItems();
foreach ($items as $item) {
...
Mage::getSingleton('checkout/cart')->removeItem($item->getId());
答案 1 :(得分:0)
找到它。
removeItem()在此事件之外工作,全部保存。在作品中($ _item-> isDeleted(true)):
$ quote = Mage :: getSingleton('checkout / session') - > getQuote();
$allQuoteItems = $quote->getAllItems();
foreach ($allQuoteItems as $_item) {
$_product = $_item->getProduct();
f ($_product->getIsPreparedToDelete()) {
$_item->isDeleted(true);
} else {
// ....
}
}
$quote->save();
答案 2 :(得分:0)
我认为您可以使用以下某个事件进行观察,并可以使用从购物车中删除特定商品:
sales_quote_item_save_before:当项目被添加到购物车时,将在该项目的保存事件触发之前调用此事件。
sales_quote_save_after:每次保存整个购物车时,此事件将在此之后被解雇。
为了您的信息,销售报价对象用于处理购物车。
以下是magento事件列表的链接:
http://www.magentocommerce.com/wiki/5_-_modules_and_development/reference/events
如有任何疑问,请随时退回。
此致 米兰