我是Laravel的新手,我在使用4.2版本的系统上进行了一些测试。我正在尝试按Documentation进行密码重置。到目前为止,我可以发布我的电子邮件以重置密码,并在我的电子邮件中获得令牌。
当我使用令牌从电子邮件中打开URL时出现此错误:
异常'Symfony \ Component \ HttpKernel \ Exception \ NotFoundHttpException'
网址为:http://example.com/reset/20e2535a11f7c88d1132c55c752a3a8569adbf5f
这是我的路线
Route::get('/password', ['uses' => 'RemindersController@getRemind']);
Route::get('/reset', ['uses' => 'RemindersController@getReset']);
这是RemindersController
public function getReset($token = null)
{
if (is_null($token)) App::abort(404);
return View::make('site.reset')->with('token', $token);
}
来自doc's的表格
<form action="{{ action('RemindersController@postReset') }}" method="POST">
<input type="hidden" name="token" value="{{ $token }}">
<input type="email" name="email">
<input type="password" name="password">
<input type="password" name="password_confirmation">
<input type="submit" value="Reset Password">
</form>
我理解错误..它说的是找不到路径/文件但它就在那里..
答案 0 :(得分:1)
检查您的默认控制器或默认安全控制器是否未在某处加载,并且不会覆盖“重置”路由,使用命令行进入应用程序目录并键入:
php artisan routes
这应该显示您的路线是否已注册以及您的路线是哪个。
答案 1 :(得分:1)
在您的html表单中,有一个名为action()
的{{1}}方法:
RemindersController@postReset
但您的路线使用<form action="{{ action('RemindersController@postReset') }}" method="POST">
<input type="hidden" name="token" value="{{ $token }}">
<input type="email" name="email">
<input type="password" name="password">
<input type="password" name="password_confirmation">
<input type="submit" value="Reset Password">
</form>
。您必须使用GET
改变您的路线:
POST
为:
Route::get('/reset', ['uses' => 'RemindersController@getReset']);
我认为你可以用这种方式。它可能更好:
Route::post('/reset', ['uses' => 'RemindersController@getReset']);
更新:路由中还应包含Route::match(['GET','POST'], ['uses' => 'RemindersController@getRemind']);
,因为网址为token
:
/reset/token