Livewire 密码重置组件

Livewire Password Reset Component

Laravel 网站声明您可以使用以下代码重置用户密码

$request->validate(['email' => 'required|email']);

$status = Password::sendResetLink(
    $request->only('email')
);

return $status === Password::RESET_LINK_SENT
            ? back()->with(['status' => __($status)])
            : back()->withErrors(['email' => __($status)]);

我想将密码重置功能创建为 Livewire 组件并使用了以下代码

$this->validate();

    $status = Password::sendResetLink(
        $this->email
    );

    return $status === Password::RESET_LINK_SENT
            ? back()->with(['status' => __($status)])
            : back()->withErrors(['email' => __($status)]);

我不断收到错误消息

Illuminate\Auth\Passwords\PasswordBroker::sendResetLink(): Argument #1 ($credentials) must be of type array, string given

我知道消息要求一个数组,但不确定如何修复它...感谢任何帮助

sendResetLink 函数需要一个 array,而您提供 string。参考代码和你的代码的区别在于参数类型。

$status = Password::sendResetLink(
    $request->only('email')
);

$request->only('email') returns 一个联想 array,看起来像; ['email' => 'you@domain.com']。这是提供给 sendResetLink 功能。

将其与您的实施进行比较。

$status = Password::sendResetLink(
    $this->email
);

您的实施仅提供you@domain.com。您想要的是创建一个模仿 $request->only('email') 返回的 array,因此;

$status = Password::sendResetLink(
    ['email' => $this->email]
);