Laravel 5.1,在密码重置中,电子邮件字段中没有值

时间:2016-03-08 13:24:58

标签: php laravel laravel-5.1

我在Laravel 5.1中遇到了密码重置过程的一些问题

步骤制作:

  1. 忘记密码页面(输入密码,重置链接将作为电子邮件发送)
  2. 来自电子邮件的用户将点击类似于http://domain.com/password/reset/的链接{longtoken}将显示一个表单,输入新密码并重新输入密码
  3. 在该表格中,我使用相同的表格,在此处https://laravel.com/docs/5.1/authentication#resetting-passwords"示例密码重置表单"

    我刚注意到隐藏的电子邮件字段没有填充

    <input type="email" name="email" value="{{ old('email') }}">
    

    当我使用laravel的默认方法时,它会调用 -

    public function getReset($token = null)
    {
        if (is_null($token)) {
            throw new NotFoundHttpException;
        }
    
        return view('auth.reset')->with('token', $token);
    }
    

    显然,没有电子邮件变量传递给视图,并在提交后点击postReset -

    public function postReset(Request $request)
    {
        $this->validate($request, [
            'token' => 'required',
            'email' => 'required|email',
            'password' => 'required|confirmed|min:6',
        ]);
    
        $credentials = $request->only(
            'email', 'password', 'password_confirmation', 'token'
        );
    
        $response = Password::reset($credentials, function ($user, $password) {
            $this->resetPassword($user, $password);
        });
    
        switch ($response) {
            case Password::PASSWORD_RESET:
                return redirect($this->redirectPath())->with('status', trans($response));
    
            default:
                return redirect()->back()
                            ->withInput($request->only('email'))
                            ->withErrors(['email' => trans($response)]);
        }
    }
    

    所以主要问题是当我使用laravel 5.1文档中的默认指南时,电子邮件字段不会填充。

    我应该像令牌一样传递电子邮件参数,还是我错过了什么?

1 个答案:

答案 0 :(得分:0)

只需在模型User.php中添加以下代码

 /**
 * Send the password reset notification.
 *
 * @param  string  $token
 * @return void
 */
public function sendPasswordResetNotification($token)
{
    $this->notify(new ResetPasswordNotification($token.'/'.$this->email));
}