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
相关产品推荐
相关产品推荐

