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

Laravel编辑用户支付信息后跳转报GET方法不支持POST错误

问题根因

Laravel的redirect()->route()方法生成的跳转响应,浏览器接收后会默认以GET请求访问目标路由,而你定义的carrito路由仅支持POST方法,因此触发方法不匹配的报错。

解决方法

方案1:调整路由请求方法(推荐,符合RESTful规范)

购物车展示页属于数据查询场景,本身就应该用GET方法,直接修改路由定义即可:

// 将原有的Route::post改为Route::get
Route::get('carrito/{user}', function ($userId) {
    $user = User::find($userId);
    return view('carrito')->with([
        'user' => $user
    ]);
})->name('carrito');

如果该路由同时需要支持POST提交其他数据的场景,可以配置为支持多种请求方法:

Route::match(['get', 'post'], 'carrito/{user}', function ($userId) {
    // 原有逻辑保持不变
})->name('carrito');

方案2:编辑完成后直接返回视图

如果不想修改路由定义,也可以在edit方法保存数据后,直接渲染carrito视图,无需走跳转逻辑:

public function edit(Request $request, $userId)
{
    // 原有保存用户数据的逻辑保持不变
    $user = User::findOrFail($userId);
    $user->name = isset($request->userName) ? $request->userName : $user->name;
    $user->lastNames = isset($request->userLastNames) ? $request->userLastNames : $user->lastNames;
    $user->email = isset($request->userEmail) ? $request->userEmail : $user->email;
    $user->phoneNumber = isset($request->userPhoneNumber) ? $request->userPhoneNumber : $user->phoneNumber;
    $user->role = isset($request->userRole) ? $request->userRole : $user->role;
    $user->preferPayMethod = isset($request->preferPayMethod) ? $request->preferPayMethod : $user->preferPayMethod;

    $user->save();

    // 替换原有跳转逻辑,直接返回视图
    return view('carrito')->with([
        'user' => $user
    ]);
}

该方案可以避免重复请求路由,还能减少一次302跳转开销,适合不需要在地址栏显式展示carrito路由的场景。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.02 06:24:04