Laravel 5.5报错:缺少password.request路由的必填参数
解决Laravel重置密码路由缺少必填参数的问题
这问题其实很明确——你调用路由password.request时,没传它要求的token参数,所以Laravel找不到匹配的路由才报错。下面一步步帮你搞定:
问题根源
先看你定义的这条路由:
Route::get('password/reset/{token}', 'Auth\ResetPasswordController@showResetForm')->name('password.request');
路由里的{token}是必填占位符,生成这个路由的URL时必须传入对应的token值,不然Laravel没法定位到这条路由,自然会抛出"缺少必填参数"的错误。
解决方案
1. 给视图里的路由补充token参数
你的reset.blade.php表单action里的route()调用需要补上token参数。用户是通过带token的重置链接进入这个页面的,ResetPasswordController@showResetForm方法应该已经把token变量传到了视图里,直接用就行:
<form class="form-horizontal" method="POST" action="{{ route('password.request', ['token' => $token]) }}">
2. 确认控制器确实传递了token
如果视图里拿不到$token,检查下ResetPasswordController的showResetForm方法,确保它把token传给了视图:
public function showResetForm(Request $request, $token) { return view('auth.reset')->with( ['token' => $token, 'email' => $request->email] ); }
或者用更简洁的写法:
return view('auth.reset', compact('token', 'email'));
额外提醒:注意路由命名规范
Laravel默认的Auth系统里,password.request其实是用来展示输入邮箱的重置申请页面的路由,展示密码重置表单的路由通常命名为password.reset,处理重置请求的是password.update。如果你是自定义了路由命名,只要前后保持一致就没问题;如果是沿用默认Auth流程,建议改回规范命名,避免后续混淆。
内容的提问来源于stack exchange,提问作者Niladri Banerjee - Uttarpara
相关产品推荐
相关产品推荐

