📅  最后修改于: 2023-12-03 15:10:33.102000             🧑  作者: Mango
Laravel 提供了验证电子邮件的功能,但是默认的验证邮件模板可能无法满足您的需求。在本文中,我将向您展示如何更改 Laravel 验证电子邮件模板。
首先,我们需要创建一个新的邮件视图。打开您的 Laravel 项目文件夹,找到 /resources/views/
目录,创建一个名为 emails
的子目录(如果还不存在),然后在 emails
目录中创建一个名为 verification.blade.php
的新视图。
这个视图将充当您的新验证电子邮件模板,您可以使用 Laravel 的模板引擎自由地实现它。
Laravel 提供了一个名为 MustVerifyEmail
的 trait,它处理所有验证电子邮件的逻辑。在您的 User 模型中使用 MustVerifyEmail
trait,确保您的用户表中有一个 email_verified_at
的字段,这将标记用户已验证他们的电子邮件地址。
为了使用新的邮件模板,我们需要修改一个方法,您可以通过覆盖以下方法来实现它:
/**
* Send the email verification notification.
*
* @return void
*/
public function sendEmailVerificationNotification()
{
$this->notify(new VerifyEmailNotification);
}
在这个方法的覆盖版本中,我们将使用您的新邮件模板代替默认的模板,通知 User 模型中的每个用户验证他们的电子邮件地址。
/**
* Send the email verification notification.
*
* @return void
*/
public function sendEmailVerificationNotification()
{
$this->notify(new VerifyEmailNotification($this));
}
请注意,我们还将通过传递 $this
变量来向通知类传递当前用户实例,这将允许我们在电子邮件模板中访问用户数据。
创建通知类将为我们提供一个机会来指定新的邮件视图。在您的 Laravel 项目文件夹中,找到 /app/Notifications
目录,然后在该目录中创建一个名为 VerifyEmailNotification.php
的新类。
在通知类中,我们需要定义 toMail()
方法来指定要使用的邮件视图。
/**
* Get the mail representation of the notification.
*
* @param mixed $notifiable
* @return \Illuminate\Notifications\Messages\MailMessage
*/
public function toMail($notifiable)
{
$verificationUrl = $this->verificationUrl($notifiable);
return (new MailMessage)
->subject('Verify Your Email Address')
->markdown('emails.verification', ['url' => $verificationUrl, 'user' => $this->user]);
}
在 toMail()
方法中,我们定义了邮件的主题,并指定要使用的新邮件视图 emails.verification
。我们还通过传递 $verificationUrl
和 $this->user
变量来向视图中注入数据,我们定义 $this->user
变量以确保在邮件模板中有访问当前用户实例的能力。
现在,我们已经成功地创建了一个新的邮件模板,并修改了验证邮件发送逻辑来使用它。在 emails.verification
视图中,您可以自由地使用 Laravel 的模板引擎来实现您想要的任何外观和感觉。
@component('mail::message')
# Verify Your Email Address
Please click the button below to verify your email address.
@component('mail::button', ['url' => $url])
Verify Email Address
@endcomponent
Thanks,<br>
{{ $user->name }}
@endcomponent
在这个例子中,我们使用了 Markdown 来实现视图。请注意,我们使用了 {{ $user->name }}
变量来显示当前用户的名称。
现在,您已经成功地从默认的 Laravel 验证电子邮件模板迈出了一大步。我们的新验证电子邮件模板使用通知类中指定的新邮件视图,在邮件模板中注入了用户数据,并使用了 Laravel 的强大模板引擎来实现您想要的任何外观和感觉。