如何修复Prestashop 1.7.8.11结账时的数组偏移访问Null错误
Prestashop 1.7.8.11结账支付流程"数组偏移访问null"错误修复方案
定位原始Smarty模板文件
编译后的PHP文件5e15b4d1179cdfd15539bcc9dbefe763da3b3d2b_2.file.cart-summary-totals.tpl.php对应主题目录下的原始模板cart-summary-totals.tpl,路径通常为themes/[你的主题]/templates/checkout/_partials/cart-summary-totals.tpl。打开该模板,通过编译文件第77行的上下文内容,匹配找到对应模板代码片段(重点找直接访问数组的语法,比如{$xxx['xxx']})。修复模板变量的非空判断
错误根源是模板直接访问了可能为null的数组变量。给数组访问添加非空校验:- 用Smarty默认值语法:将
{$some_array['key']}改为{$some_array['key']|default:0}(数值类型)或{$some_array['key']|default:''}(字符串类型) - 用条件判断包裹:
{if isset($some_array) && isset($some_array['key'])}{$some_array['key']}{/if}
- 用Smarty默认值语法:将
排查购物车数据异常
- 后台进入「订单>购物车」,查看当前用户购物车的总价项(小计、运费、税费等)是否存在缺失
- 清空购物车后重新添加商品测试,排除临时数据异常
- 临时禁用自定义促销、税费类模块,排查是否是第三方模块修改总价计算逻辑导致的问题
重置Smarty缓存
- 后台进入「高级参数>性能」,点击「清空缓存」和「清空编译缓存」
- 手动删除服务器
var/cache和var/compiled目录下的缓存文件(保留目录内的index.php)
验证主题兼容性
- 临时切换到官方默认主题(如Classic)测试,若错误消失,说明是当前主题模板适配问题,需调整主题代码或联系开发者修复
内容的提问来源于stack exchange,提问作者Raul A.
相关产品推荐
相关产品推荐

