用户在电子邮件中收到格式为http://example.com/reset/passwordresetcode的密码重置网址。我有一个为此链接定义的路由
Route::get('reset/{code}', function(){
return View::make('users.reset_password');
});
单击电子邮件中的链接后,将呈现包含form
的视图以重置密码。此表单由email
,password
和password confirm
字段组成,我计划直接从网址抓取passwordresetcode
。在我看来,我能够得到这个passwordresetcode
。
现在要处理表单post
,我将路由定义为:
Route::post('reset', 'UserController@passwordReset');
如何在此控制器操作passwordresetcode
中获取passwordReset
?我知道我可以在form
中有一个隐藏的字段来接收它post
,但它看起来并不像laravel方式,肯定必须有更好的方法。一种新的laravel :)。感谢
答案 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
,但也没有用。