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

Dan*_*est 3 php codeigniter cart

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

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

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

我想到的最简单的方法是允许具有相同ID的产品包含在购物车中,这很容易吗?有没有更好的方法来解决这个问题?

任何想法都会非常有帮助!

Dan*_*est 7

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

基本上我使用多维数组作为Codeigniter的cart类不支持的选项.

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

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

$rowid = md5($items['id'].implode('', $items['options']));
Run Code Online (Sandbox Code Playgroud)

用这一行:

$rowid = md5($items['id'].serialize($items['options']));
Run Code Online (Sandbox Code Playgroud)

解决问题.

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