【发布时间】:2021-05-26 21:12:03
【问题描述】:
我正在使用 fortify 进行身份验证,但是我需要更改 fortify 自动发送的“重置密码”电子邮件模板中的文本。我找不到实现这一目标的方法。
还可以从 Nova 使模板可编辑吗?我在 Nova 中有一个 MailTemplate 资源,允许从 Nova 更改电子邮件模板,但我无法为“重置密码电子邮件”实现这一点,因为它是由 fortify 发送的,无法找到控制它的方法。
【问题讨论】:
我正在使用 fortify 进行身份验证,但是我需要更改 fortify 自动发送的“重置密码”电子邮件模板中的文本。我找不到实现这一目标的方法。
还可以从 Nova 使模板可编辑吗?我在 Nova 中有一个 MailTemplate 资源,允许从 Nova 更改电子邮件模板,但我无法为“重置密码电子邮件”实现这一点,因为它是由 fortify 发送的,无法找到控制它的方法。
【问题讨论】:
Fortify 使用 Laravel 的核心通知系统来发送密码重置电子邮件。对此负责的具体文件是位于Illuminate\Auth\Notifications 的PasswordReset.php 文件。
自定义发送的电子邮件的最简单方法是复制PasswordReset 文件并将其保存到您的项目中的某个位置(例如App\Notifications)并使用不同的名称(可选)。
复制并根据自己的喜好对其进行自定义后,您需要覆盖 User 模型上的 sendPasswordResetNotification 方法,该模型继承自 Authenticatable 类的 CanResetPassword 特征。
/**
* Send the password reset notification.
*
* @param string $token
* @return void
*/
public function sendPasswordResetNotification($token)
{
$this->notify(new App\Notifications\CustomResetPasswordNotification($token));
}
当您在那里时,您可能希望覆盖其他一些通知,例如VerifyEmail 通知。
关于在 Nova 中管理内容/布局,我怀疑这是可能的。您可能需要编写一个自定义包来读取 mardown 文件,这就是您在电子邮件中使用的内容,或者为可以存储在数据库中并通过 Nova 管理的文本定义一些占位符。
【讨论】: