我从laravel文档中复制了一个示例:
public function postResetPassword() {
$credentials = array('email' => Input::get('email'));
return Password::reset($credentials, function($user, $password) {
$user->password = Hash::make($password);
$user->save();
return Redirect::to('/');
});
}
但似乎返回Redirect :: to('/')不起作用,因为我得到一个错误,告诉找不到控制器方法,而不是主页。 但是如果我这样编写代码:
$credentials = array('email' => Input::get('email'));
Password::reset($credentials, function($user, $password) {
$user->password = Hash::make($password);
$user->save();
});
return Redirect::back();
虽然我无法理解如何获得会话闪存变量(实际上我得到它们),但它有效。
另一个问题是关于密码长度(6个字符)的规则在哪里写的?我可以改变它们吗?
答案 0 :(得分:1)
要回答为什么您的第一个代码示例不起作用的原因是,如果您查看app/routes.php
文件,则应该看到Route::get('/', 'HomeController@index');
的内容。 @
符号前面的部分是控制器的名称,而后面的部分是请求路径时在控制器中调用的方法。确保定义了方法。
查看following后。我认为你应该将重定向放在你给出的闭包内作为return语句。
然后,在您使用以下 Session::get('key');
重定向用户后,如何检索已闪回会话的数据。
关于您的上一个问题,请查看以下documentation。
例如:
$validator = Validator::make(
array('email' => Input::get('email'), 'password' => Input::get('password'), 'password_confirm' => Input::get('password_confirm')),
array('email' => 'required|unique:users,email|email', 'password' => 'required|min:3|max:20|same:password_confirm')
);
传递的第二个数组是您可以修改验证器规则的地方。
答案 1 :(得分:0)
回答有关更改密码验证规则的第二个问题。
密码外观扩展PasswordBroker.php
,其功能在第208行:
/**
* Set a custom password validator.
*
* @param \Closure $callback
* @return void
*/
public function validator(Closure $callback)
{
$this->passwordValidator = $callback;
}
因此,要覆盖默认密码验证器,只需从控制器进行此调用:
Password::validator(function(){
//validator in here
});