Codeigniter购物车:多次将商品添加到购物车替换

时间:2012-06-22 00:28:10

标签: codeigniter shopping-cart

使用CI 2.1.1和本机购物车库

如果我多次插入一个项目(具有相同的产品ID,相同的选项),它将替换而不是增加数量。

这可能是一个错误,我错过了什么,或者自己添加此功能的最佳方法是什么?

2 个答案:

答案 0 :(得分:7)

所以这是我的解决方案,更改为系统/库/ Cart.php在行号。 233至244

可能有更好的方法可以做到这一点,但它可以解决问题。我不明白为什么功能不存在

    // EDIT:    added check if idential rowid/item already in cart, then just increase qty
    //          without this addition, it would not increase qty but simply replace the item
    if (array_key_exists($rowid, $this->_cart_contents)) 
    {  
       $this->_cart_contents[$rowid]['qty'] += $items['qty'];    
    } 
    else 
    {
        // let's unset this first, just to make sure our index contains only the data from this submission
        unset($this->_cart_contents[$rowid]);     

        // Create a new index with our new row ID
        $this->_cart_contents[$rowid]['rowid'] = $rowid;

        // And add the new items to the cart array
        foreach ($items as $key => $val)
        {
            $this->_cart_contents[$rowid][$key] = $val;
        }                       
    }      

答案 1 :(得分:2)

这不是一个错误。以这种方式看待它:你告诉CI你想在购物车中购买1件产品。如果它已经存在,它会保持这种状态。 rowid确实会更新。

编辑核心库是一个好主意。这使得您的应用程序依赖于您所做的更改,并且当您更新CI并忘记再次更改核心时,它可能会破坏它。

如果您真的希望每次用户点击“添加”时都能增加qty 我建议做一些与你所做的相似的事,但在你身上model。 检查产品是否已装入购物车,获取qty并将现有qty添加到新产品中。 这有意义吗?