密码重置路由laravel

时间:2014-06-04 09:43:13

标签: php laravel laravel-4

用户在电子邮件中收到格式为http://example.com/reset/passwordresetcode的密码重置网址。我有一个为此链接定义的路由

Route::get('reset/{code}', function(){
    return View::make('users.reset_password');
});

单击电子邮件中的链接后,将呈现包含form的视图以重置密码。此表单由emailpasswordpassword confirm字段组成,我计划直接从网址抓取passwordresetcode。在我看来,我能够得到这个passwordresetcode

现在要处理表单post,我将路由定义为:

Route::post('reset', 'UserController@passwordReset');

如何在此控制器操作passwordresetcode中获取passwordReset?我知道我可以在form中有一个隐藏的字段来接收它post,但它看起来并不像laravel方式,肯定必须有更好的方法。一种新的laravel :)。感谢

2 个答案:

答案 0 :(得分:1)

您可以使用隐藏的输入,将代码从控制器方法传递到视图,这样代码将在提交时将其余的表单数据发布到passwordReset。

{{ Form::hidden('passwordresetcode', $passwordresetcode) }}

或者您可以使用flash变量将其临时存储在会话中:

Session::flash('passwordresetcode', 'value');

在下一个控制器方法(passwordReset)中,只需检索它:

Session::get('passwordresetcode');

您可以在官方文档中read more about flash variables

答案 1 :(得分:0)

修改为post定义的路线

Route::post('reset/{code}', 'UserController@passwordReset');

做了这个伎俩。在控制器中,我可以通过

获得passwordresetcode
public function passwordReset($code)
{ 
      echo $code;
}

但是,如果验证失败,请尝试重定向,如

return Redirect::route('reset/'.$code)->withInput()
                ->withErrors($validation)
                ->with('title', 'resetrequestfailure')
                ->with('message', 'Seems like you made some errors.');

似乎不起作用。我也尝试使用named routes,但也没有用。