Laravel更新查询失效触发404错误,请求技术协助
Laravel编辑用户提交后404错误排查求助
我是Laravel新手,在编辑用户信息并点击提交按钮后,页面出现404错误,表单内容未发生任何变更。我推测可能存在细微疏漏,以下是我的表单代码与更新路由代码,恳请帮忙排查问题:
表单代码
<form action="users/edit/{{$user->id}}" method="post"> @csrf <div class="mb-3 mt-3"> <label for="name" class="form-label">اسم</label> <input type="text" class="form-control" id="name" name="name" value="{{$user->name}}"> </div> <div class="mb-3"> <label for="lastname" class="form-label">فامیلی:</label> <input type="text" class="form-control" id="last_name" name="last_name" value="{{$user->last_name}}"> </div> <button type="submit" class="btn btn-primary" >ثبت</button> </div> </form>
更新路由代码
Route::post('/users/edit/{id}', function (Request $request, $id) { DB::table('users') ->where('id', $id) ->update([ 'id' => $request->id, 'name' => $request->name, 'last_name' => $request->last_name, ]); return 'done'; });
排查修复方案:
修正表单action路径
表单里的相对路径users/edit/{{$user->id}}容易因当前页面URL层级问题导致路由不匹配,改用Laravel路由辅助函数或绝对路径:- 先给路由命名:
Route::post('/users/edit/{id}', function (Request $request, $id) { // 逻辑不变 })->name('users.update'); - 表单里用
route()生成正确路径:<form action="{{ route('users.update', $user->id) }}" method="post">
或者直接用绝对路径:
<form action="/users/edit/{{$user->id}}" method="post">- 先给路由命名:
遵循Laravel资源更新的HTTP方法规范
更新操作建议用PUT或PATCH方法,需在表单里添加@method('PUT'):<form action="{{ route('users.update', $user->id) }}" method="post"> @csrf @method('PUT') <!-- 其他表单内容 --> </form>对应路由也要改成
PUT:Route::put('/users/edit/{id}', function (Request $request, $id) { // 逻辑不变 })->name('users.update');移除更新逻辑中不必要的ID字段
表单未提交id参数,且用户ID不应被修改,删掉update数组里的'id' => $request->id:DB::table('users') ->where('id', $id) ->update([ 'name' => $request->name, 'last_name' => $request->last_name, ]);清除路由缓存
如果之前执行过php artisan route:cache,新路由可能未生效,运行:php artisan route:clear
内容的提问来源于stack exchange,提问作者Pezhman
相关产品推荐
相关产品推荐

