2012-12-08 66 views
1

我试图多次添加一些项目到购物车,但添加项目doe的不出现在购物车,如果它已经在它。Codeigniter购物车 - 添加项目多次不增加数量

这是在CI车正常吗,或者我搞砸了什么?

如何解决此问题?

我想多次添加相同的商品,以便更改第二件商品的价格(特价商品)。

我的cart_add函数看起来像codeigniter手册中的例子,我认为没有必要包含代码。

我在购物车类代码中发现,该购物车行标识符($rowid)是从idoptions生成的md5校验和。我暂时在options阵列中添加了如下内容:

'options' => array('rid' => mt_rand(), ...) 

但是有没有更好的方法?我觉得我做错了。

回答

2

据我所知,你不能直接添加/更新购物车多次,使其数量增加。您需要通过对购物车内容进行循环来进行购物车更新。这是因为CI总是会在插入的产品/物品上创建唯一的row_id。 The reason a unique ID is created is so that identical products with different options can be managed by the cart。为了更清楚你可以参考这个article

在这里,你可以做到及时更新您的购物车中物品:

foreach($this->cart->contents() as $item){ 
    if($item['id'] == 'your_product_id'){ 
     $item['qty'] = 3; 
     $this->cart->update($item); 
    } 
} 
+0

感谢澄清,但经过CI车类代码分析,我把随机数到选项数组迫使每个项目的“实例”的唯一标识符添加。我认为这种方法会更快(无循环),并且无论如何我需要重复项目才能处理特价(同一产品的价格超过1)。 – Kamil

+0

@Kamil对于迟到的回复感到抱歉。确实,使用你的方法会更快,因为CI只会将它作为不同的产品添加(尽管只有不同的选项)。这是基于你的需要。欢迎您:) – SubRed

相关问题