1

我从 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 个字符)的规则写在哪里?我可以改变它们吗?

4

2 回答 2

1

要回答为什么您的第一个代码示例不起作用,是因为如果您查看app/routes.php文件,您应该会看到类似Route::get('/', 'HomeController@index');. 符号之前的部分@是控制器的名称,而符号之后的部分是请求路由时在控制器中调用的方法。确保定义了该方法。

看完以下。我认为您应该将重定向放在作为返回语句提供的闭包中。

然后在重定向用户后如何检索已闪到会话的数据,您使用以下内容Session::get('key');

对于您的最后一个问题,请查看以下文档

例子:

$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')
        );

传递的第二个数组是您可以修改验证器规则的地方。

于 2013-07-15T20:24:37.657 回答
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 
});
于 2015-05-18T13:24:35.913 回答