Magento:如何从购物车中获取产品并再次添加

Magento : How to Get product from cart and add it again

我想从数组中获取购物车中的所有产品。我想从购物车中删除所有产品。之后,我想根据某些条件在购物车中再次添加具有相同数量和选项的相同产品,这些产品由客户再次选择。我做了以下。

1) 将购物车中可用的所有产品保存在数组中。使用以下代码。

$quote = $this->getQuote();

$i=0;

foreach ($quote->getAllItems() as $item) {
        $bufferItems[$i] = $item;
        $i++;
}

2) 使用以下代码从购物车中删除所有产品。

foreach ($quote->getAllItems() as $item) {
        $quote->getItemsCollection()->removeItemByKey($item->getId());
}

到目前为止一切正常。

现在我不知道如何将产品添加回购物车...任何人都可以帮助我。

我做了以下操作,但没有用。

1) $quote->addProduct($bufferItems[1]);
2) $quote->addItem($bufferItems[1]);

请在您的代码中尝试以下代码

$params = array(
    'product' => 164,
    'qty' => 2,
);
 
$cart = Mage::getSingleton('checkout/cart');
 
$product = new Mage_Catalog_Model_Product();
$product->load(164);
 
$cart->addProduct($product, $params);
$cart->save();
 
Mage::getSingleton('checkout/session')->setCartWasUpdated(true);
 
$message = $this->__('Custom message: %s was successfully added to your shopping cart.', $product->getName());
Mage::getSingleton('checkout/session')->addSuccess($message);

试试这个:

$cartItems = Mage::getModel("checkout/cart")->getItems();

$cart = Mage::getModel('checkout/cart');

$cart->init();

 foreach($cartItems as $item) {
   $_product = Mage::getModel('catalog/product')->load($item->getProductId());
   $cart->addProduct($_product, array('qty' => $item->getQty()));
 }

 $cart->save();
 Mage::getSingleton('checkout/session')->setCartWasUpdated(true);