3

使用 CI 2.1.1 和本机 Cart 库

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

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

4

2 回答 2

7

所以这是我的解决方案,在第 1 行更改 System/libraries/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;
        }                       
    }      
于 2012-06-22T00:47:16.877 回答
2

这不是一个错误。这样看:你告诉 CI 你想要 1 个 productX 在你的购物车中。如果它已经在那里,它就会保持这种状态。rowid确实得到更新。

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

如果您真的希望能够增加qty用户每次点击 Add 的次数,那么我建议您做一些与您所做的类似的事情,但在 you 中model。检查产品是否已经在购物车中,获取qty并将现有产品添加qty到新产品中。这有意义吗?

于 2012-06-22T08:30:45.323 回答