我从从路由加载的刀片password.blade.php开始
Route::get('password/email', 'Auth\PasswordController@getEmail')
->name('auth.password.email');
在刀片中,我有一张要发布到路线的表格:
Route::post('password/change', 'User\UserController@password')
->name('user.password.change');
像这样:
{!! Form::open(array('method' => 'POST', 'url' => route('user.password.change'))) !!}
<div class="form-group">
<label for="email">Email Address</label>
<input type="email" class="form-control" name="email" id="email" value="{{ old('email') }}">
</div>
<button type="submit" class="btn btn-primary btn-block">Send Email</button>
{!! Form::close() !!}
但是,如果可行,看来它仍在发布到获取起始刀片的“密码/电子邮件”路由中。
如何确保它发布到user.password.change路由?
答案 0 :(得分:2)
如果您未发布到正确的路由,则路由必须返回false或null。这意味着您没有传递所有必要的参数,或者所讨论的路由存在问题。问题变成了“为什么?”
一种可能性是路由缓存需要更新。这可以通过artisan命令完成:
php artisan route:cache
“问题”中的路由似乎并非如此,但是,如果您的UsersController函数需要一个User $ user,则需要确保您的路由和表单能够反映出来。
假设您使用的是Laravel或Laravel集合的较旧版本。问题出在您的form open中。您没有传递要更改密码的用户,如果使用Auth :: user(),则可能不需要传递该参数(此外,请确保路由检查您是否未更改密码)在另一个帐户上)
{!! Form::open(array('method' => 'POST', 'route' => ['user.password.change,'user'=>$user->id]])) !!}
OR
{!! Form::open(array('method' => 'POST', 'url' => 'user/' . $user->id . 'password/change'])) !!}
此外,除非您有充分的理由不这样做,否则您无需自己进行身份验证。 Laravel有一个auth package available,您可以将其添加到任何运行Laravel 5.4+的项目中。