我正在使用laravel 5.2中包含的身份验证
我在重置密码表单时遇到问题。
当我提交电子邮件时,它会返回以下错误:
在null
上调用成员函数getEmailForPasswordReset()
我通过以下代码找到了这个原因:
$user->getEmailForPasswordReset()
$user
为null
此外,我尝试在功能Illuminate\Auth\Passwords\PasswordBroker
emailResetLink
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()
效果很好!
你可以帮我搞清楚我做错了什么吗? 感谢。答案 0 :(得分:0)
问题绝对不在laravel文件中,所以请停止查看并弄乱代码,因为你冒着比修复更多的东西的风险,并且一旦你进行作曲家更新它就会被覆盖。
$ user为null,因为系统找不到要向其发送密码重置链接的用户。看到你的控制器实现密码重置(提交)会更有帮助。 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');
}
}
如您所见,您无需处理用户对象。