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

Laravel Shopping Cart添加商品后购物车计数不增长问题咨询

故障原因

购物车计数始终停在1是两个问题叠加导致的:

  • 模板表单未闭合:你在blade里写的加入购物车表单没有加</form>闭合标签,浏览器渲染商品列表时,会把后续所有商品行的隐藏item_id输入框都归到第一个未闭合的表单中。不管你点击哪个商品的加入购物车按钮,提交的永远是列表第一个商品的ID,相当于反复给同一个商品增加购买数量,不会生成新的购物车条目。
  • 计数方法使用错误:你用的Cart::content()->count()是统计购物车内不同商品的条目数,不是商品总件数。反复添加同一个商品只会增加对应条目的购买数量,不会新增独立条目,所以这个返回值会一直停在1。
修正方案
  1. 补全blade模板里的表单闭合标签,修正后的商品行代码如下:
<td>
    <a href="{{ url('model/download/'.$item->id) }}"class="btn btn-app btn-success"><i class="fa fa-save"></i>Download</a>
    <a href="{{ url('model/view/'.$item->model_name) }}"class="btn btn-app btn-primary"><i class="fa fa-inbox"></i>View</a>
    <form action="{{ route('model.cart') }}" method="POST">
        @csrf
        <input type="hidden" value="{{$item->id}}" name="item_id">
        <button type="submit" class="btn btn-app btn-info" ><i class="fa fa-edit"></i>Add to cart</button>
    </form>
</td>
  1. 替换页面上的购物车计数代码,使用扩展包提供的总件数统计方法:
Cart({{ \Gloudemans\Shoppingcart\Facades\Cart::count() }})
  1. 控制器里的Cart::add()建议补全正确的商品参数,不要传固定字符串'NULL'和写死价格,避免后续购物车展示、金额计算出现异常,修正后代码如下:
public function addCart(Request $request){
    $item = Item::findOrFail($request->input('item_id'));
    Cart::add(
        $item->id,
        $item->model_name, // 替换为你商品表存储名称的实际字段
        1,
        $item->price // 替换为你商品表存储价格的实际字段,不要写死1
    );

    return redirect()->back();
}

补充说明:如果后续需要给购物车商品加自定义属性(例如下载有效期、版本规格等),可以在Cart::add()的第五个参数传入关联数组,扩展包会自动根据属性值区分同ID不同规格的商品条目。

内容的提问来源于stack exchange,提问作者Jenn_ifer289

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.30 22:21:28