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