Laravel Shopping Cart添加商品后购物车计数不增长问题咨询
故障原因
购物车计数始终停在1是两个问题叠加导致的:
- 模板表单未闭合:你在blade里写的加入购物车表单没有加
</form>闭合标签,浏览器渲染商品列表时,会把后续所有商品行的隐藏item_id输入框都归到第一个未闭合的表单中。不管你点击哪个商品的加入购物车按钮,提交的永远是列表第一个商品的ID,相当于反复给同一个商品增加购买数量,不会生成新的购物车条目。 - 计数方法使用错误:你用的
Cart::content()->count()是统计购物车内不同商品的条目数,不是商品总件数。反复添加同一个商品只会增加对应条目的购买数量,不会新增独立条目,所以这个返回值会一直停在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>
- 替换页面上的购物车计数代码,使用扩展包提供的总件数统计方法:
Cart({{ \Gloudemans\Shoppingcart\Facades\Cart::count() }})
- 控制器里的
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
相关产品推荐
相关产品推荐

