Magento2.3.7切换用户后购物车additional_options字段丢失修复
问题:切换账号后购物车商品规格显示不完整(additional_options字段丢失)
问题场景与症状
- 操作流程:打开购物车添加商品后退出账号(保留购物车),在同一浏览器切换至另一个Magento账号
- 异常表现:
quote_item_options表中的additional_options字段丢失,导致商品的规格信息(如颜色、尺寸、自定义参数等)无法完整显示
解决方案:修改Magento\Checkout\Model\Session类
问题根源在于切换账号合并购物车时,核心代码未处理additional_options字段的复制逻辑,需调整该类中购物车合并/加载的相关方法,确保字段被正确保留。
具体修改步骤
- 定位核心文件:
vendor/magento/module-checkout/Model/Session.php - 找到处理购物车item复制的方法(通常是
_mergeQuotes或loadCustomerQuote中的item循环逻辑) - 在复制item属性的代码块中,添加
additional_options字段的复制逻辑:
// 确保additional_options字段被复制到新购物车item if ($originalItem->getOptionByCode('additional_options')) { $newItem->addOption([ 'code' => 'additional_options', 'value' => $originalItem->getOptionByCode('additional_options')->getValue() ]); }
- 保存文件后,执行缓存清理命令:
bin/magento cache:clean bin/magento cache:flush
重要提示
直接修改核心文件存在升级被覆盖的风险,推荐通过自定义模块重写Magento\Checkout\Model\Session类来实现修改,避免影响后续Magento版本升级。
内容的提问来源于stack exchange,提问作者i like magento
相关产品推荐
相关产品推荐

