我目前正在构建一个简单的电子商务网站,并遇到了一个有趣的问题。
基本上,产品在产品表中,但也有许多其他选项,如价格,颜色等......其中一些对总价格有影响。
但是,如果存在相同但具有不同选项集的产品,那么产品ID显然是相同的,并且该项目不会添加到codeigniter购物车中。
我想到的最简单的方法是允许具有相同ID的产品包含在购物车中,这是否可以轻松实现?有没有更好的方法来解决这个问题?
任何想法都会非常有用!
答案 0 :(得分:7)
好的,所以我找到了一个人们可能会觉得有用的问题的答案。
基本上我使用多维数组作为Codeigniter的购物车类不支持的选项。
然后生成相同的行id,因为数组显示为数组,但也可能已经破坏了用于在Codeigniter Cart类中生成哈希的implode函数。
要解决此问题,您可以在CI_Cart类中简单地替换此行:
$rowid = md5($items['id'].implode('', $items['options']));
这一行:
$rowid = md5($items['id'].serialize($items['options']));
解决问题。
然后,这将创建多维数组的可存储表示形式作为文本,然后进行散列,如果有多维数组用作选项值,则它将始终是唯一的。