You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Laravel 9使用laravelshoppingcart出现Undefined array key 'prix_ttc'错误

解决Laravel 9中laravelshoppingcart包「Undefined array key 'prix_ttc'」错误

在Laravel 9项目中使用darryldecode/laravelshoppingcart包实现购物车小计功能时,参考Laravel 5.6的教程后出现「Undefined array key 'prix_ttc'」错误,以下是具体原因分析和解决办法:

原因分析

问题核心在于旧版本教程的API与当前适配Laravel 9的包版本不兼容:Laravel 5.6时期的包版本中,购物车项的attributes是以数组形式存储的,但新版本包中attributes已改为对象类型,直接用数组键名访问会导致未定义错误。此外,若购物车存在未包含prix_ttc属性的旧缓存数据,也会触发该错误。

解决步骤

1. 确保包版本适配Laravel 9

先确认安装的laravelshoppingcart包版本支持Laravel 9,执行以下命令更新到最新兼容版本:

composer require darryldecode/laravelshoppingcart

2. 修改视图中属性的访问方式

将视图里数组形式的属性访问改为对象的get()方法:
原视图代码:

<td>
    {{ $produit->attributes['prix_ttc'] }} €
</td>

<td>
    {{ number_format($produit->attributes['prix_ttc'] * $produit->quantity,2)}} €
</td>

修改后:

<td>
    {{ $produit->attributes->get('prix_ttc') }} €
</td>

<td>
    {{ number_format($produit->attributes->get('prix_ttc', 0) * $produit->quantity, 2) }} €
</td>

注:添加第二个参数0作为默认值,可避免因属性缺失再次报错

3. 清空购物车缓存

由于之前添加的商品未包含prix_ttc属性,需清空现有购物车数据,可临时在控制器中添加以下代码执行一次:

Cart::destroy();

执行后即可移除旧缓存数据,之后添加的商品会正确携带prix_ttc属性。

内容的提问来源于stack exchange,提问作者kr.Nada

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.24 10:48:17