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

Laravel使用bumbummen99/shoppingcart包访问cart路由GET方法不支持报错求助

问题根因

你当前的/cart路由仅定义了POST方法,仅用于接收添加购物车的表单提交请求。当你直接在浏览器地址栏输入/cart访问、或者通过<a>标签跳转访问/cart时,浏览器默认发起GET请求,自然会触发方法不支持的报错。

解决方案
  • 第一步:新增GET类型的购物车展示路由
    在路由文件中新增如下代码,原有POST路由无需修改:
// Laravel 8+ 写法
use App\Http\Controllers\CartController;
Route::get('/cart', [CartController::class, 'index'])->name('cart.index');
Route::post('/cart', [CartController::class, 'store'])->name('cart.store');

// 旧版本Laravel写法
// Route::get('/cart', 'App\Http\Controllers\CartController@index')->name('cart.index');
// Route::post('/cart', 'App\Http\Controllers\CartController@store')->name('cart.store');
  • 第二步:在CartController中新增index方法,用于渲染购物车页面
public function index()
{
    // 获取购物车所有商品内容
    $cartItems = Cart::content();
    // 可选:计算购物车总价
    $totalAmount = Cart::total();
    
    return view('cart.index', compact('cartItems', 'totalAmount'));
}
  • 第三步:创建购物车页面对应的模板文件resources/views/cart/index.blade.php,示例代码如下:
<h1>我的购物车</h1>
@if(session('message'))
    <div class="alert-success">{{ session('message') }}</div>
@endif
@foreach($cartItems as $item)
    <div>
        车辆名称:{{ $item->name }} | 单价:{{ $item->price }} | 数量:{{ $item->qty }}
    </div>
@endforeach
<div>合计总价:{{ $totalAmount }}</div>
  • 额外注意:如果页面上需要加跳转购物车的按钮,href请填写{{ route('cart.index') }},不要填cart.store的路由,cart.store仅用于表单POST提交使用。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.26 15:54:03