Laravel访问UserController@edit提示未找到 路由配置错误排查
问题根因
错误出在资源路由的根路径配置上:
- 你把
Route::resource的第一个路径参数传了/,Laravel生成资源路由时,会自动在路径里加对应资源的参数占位符,路径传/时占位符无法正常生成,你跑route:list看到的{}/edit就是异常结果——正常资源edit路由应该是类似/资源名/{资源参数}/edit的结构,现在占位符是空的,路由匹配规则本身就失效了。 - 你手动拼的链接
{{ url($i->id.'/edit') }}生成的是/1/edit这类地址,匹配异常路由的时候,框架会把1/edit整个当成那个空占位符的参数,根本识别不到后面的/edit段,自然直接返回404资源未找到。
修复步骤
- 给资源路由指定明确的路径前缀,不能直接拿
/当资源根路径:// 示例:给用户资源配users前缀,框架会自动生成标准的RESTful路由结构 Route::resource('users', UserController::class); - 不要手动拼接URL,用
route()助手按路由名生成地址,从根源避免路径拼错:<!-- resource路由会自动生成名为users.edit的编辑路由,直接传入用户ID当参数即可 --> <a href="{{ route('users.edit', $i->id) }}">edit</a> - 改完路由后执行
php artisan route:clear清掉路由缓存,再执行php artisan route:list确认edit路由路径显示为users/{user}/edit,就可以正常访问了。
内容的提问来源于stack exchange,提问作者Fragmantedbin
相关产品推荐
相关产品推荐

