Codeigniter - 如果选项不同,请添加具有相同ID的产品

时间:2012-05-06 19:52:28

标签: php codeigniter cart

我目前正在构建一个简单的电子商务网站,并遇到了一个有趣的问题。

基本上,产品在产品表中,但也有许多其他选项,如价格,颜色等......其中一些对总价格有影响。

但是,如果存在相同但具有不同选项集的产品,那么产品ID显然是相同的,并且该项目不会添加到codeigniter购物车中。

我想到的最简单的方法是允许具有相同ID的产品包含在购物车中,这是否可以轻松实现?有没有更好的方法来解决这个问题?

任何想法都会非常有用!

1 个答案:

答案 0 :(得分:7)

好的,所以我找到了一个人们可能会觉得有用的问题的答案。

基本上我使用多维数组作为Codeigniter的购物车类不支持的选项。

然后生成相同的行id,因为数组显示为数组,但也可能已经破坏了用于在Codeigniter Cart类中生成哈希的implode函数。

要解决此问题,您可以在CI_Cart类中简单地替换此行:

$rowid = md5($items['id'].implode('', $items['options']));

这一行:

$rowid = md5($items['id'].serialize($items['options']));

解决问题。

然后,这将创建多维数组的可存储表示形式作为文本,然后进行散列,如果有多维数组用作选项值,则它将始终是唯一的。