【问题标题】:Laravel 5 Authentication: Call to a member function getEmailForPasswordReset() on nullLaravel 5 身份验证:在 null 上调用成员函数 getEmailForPasswordReset()
【发布时间】:2016-05-13 11:03:20
【问题描述】:

我正在使用 laravel 5.2 中包含的身份验证

我在重置密码表单时遇到问题。

当我提交电子邮件时,它返回此错误:

在 null 时调用成员函数 getEmailForPasswordReset()

我通过以下代码找到了这个原因:

$user->getEmailForPasswordReset()

$usernull

另外,我尝试在函数emailResetLink处更改Illuminate\Auth\Passwords\PasswordBroker

return $this->mailer->send($view, compact('token', 'user'), function ($m) use ($user, $token, $callback) {
        $m->to($user->getEmailForPasswordReset());

        if (! is_null($callback)) {
            call_user_func($callback, $m, $user, $token);
        }
    });

我改变:compact('token', 'user') -> ['token'=>$token, 'user2'=>$user]

还有$user->getEmailForPasswordReset() -> $user2->getEmailForPasswordReset()

效果很好!

你能帮我弄清楚我做错了什么吗? 谢谢。

【问题讨论】:

    标签: laravel authentication


    【解决方案1】:

    问题绝对不在 laravel 文件中,所以不要再看那里并弄乱代码了,因为你可能会破坏比你修复的东西更多的东西,而且一旦你更新作曲家,它就会被覆盖。

    $user 为空,因为系统找不到您要向其发送密码重置链接的用户。查看实现密码重置(提交)的控制器会更有帮助。 Laravel 有一个很好的起点,除非需要,否则你不应该过度设计它:https://laravel.com/docs/5.2/authentication#resetting-routing

    所以发送重置链接的方法如下所示:

    public function postEmail(Request $request)
        {
            $this->validate($request, ['email' => 'required|email']);
    
            $response = Password::sendResetLink($request->only('email'), function (Message $message) {
                $message->subject($this->getEmailSubject());
            });
    
            switch ($response) {
                case Password::RESET_LINK_SENT:
                    return redirect()->back()->with('message', 'Password reset link sent');
    
                case Password::INVALID_USER:
                    return redirect()->back()->with('message', 'User not found');
            }
        }
    

    如您所见,您无需处理任何用户对象。

    【讨论】:

    • 感谢@Tadas,我认为问题仍然是 $user 无法分配给邮件模板。我已经通过覆盖 PasswordController 中的函数 sendResetLinkEmail 来修复它,我不需要更改任何 Laravel 核心。
    猜你喜欢
    • 2016-08-12
    • 1970-01-01
    • 2017-07-19
    • 2016-09-04
    • 2016-06-29
    • 2018-04-03
    • 2021-10-06
    • 2019-06-17
    • 2020-10-22
    相关资源
    最近更新 更多