发送密码重置 Link In Laravel 返回空数组

Sending Password Reset Link In Laravel returning empty array

我正在关注文档并尝试发送重置密码 link。 唯一的区别是我使用 Symfony 表单供用户输入他们的电子邮件。 当我看到 Request 中的内容时,我看到了嵌套数组。 第一个数组键是 formSymfony 表单名称,然后在其中我看到一个包含 key/value 对 Email => myemail@gmail.com

的数组

当我到达状态块并转储 $request->only('Email') 时,我得到一个空数组,然后我收到 Laravel 找不到具有该电子邮件的用户的错误。我知道 only() 也需要一个数组。

这是我在我的控制器

中尝试过的
    $emailAddress = $request->input('form.Email');
    $credentials = ['email' => $emailAddress];
    $status = Password::sendResetLink(
        $request->only($credentials)
    );

    dd(__($status)); // Cannot find user with that email

数组结构

    array:1 [▼
        "form" => array:1 [▼
            "email" => "myemail@gmail.com"
        ]
    ]

您没有向 sendResetLink 提供 $credentials 数组。试试这个:

$emailAddress = $request->input('form.email');
$credentials = ['email' => $emailAddress];
$status = Password::sendResetLink(
    $credentials
);

更新 1:
还要确保您的 User 模型(或您使用的默认 auth 模型)实现了 CanResetPasswordContract 并使用了 CanResetPassword 特征。 Laravel 随附的默认 User 型号已经包含。

更新二:
如果您有自定义电子邮件字段名称,如 user_emailorg_email 等,您需要覆盖默认功能并将此功能添加到您的 User 模型中。

public function getEmailForPasswordReset()
{
    return $this->user_email;
}