📜  更改验证电子邮件模板 laravel - PHP (1)

📅  最后修改于: 2023-12-03 15:10:33.102000             🧑  作者: Mango

更改验证电子邮件模板 laravel - PHP

Laravel 提供了验证电子邮件的功能,但是默认的验证邮件模板可能无法满足您的需求。在本文中,我将向您展示如何更改 Laravel 验证电子邮件模板。

步骤

1. 创建新的邮件视图

首先,我们需要创建一个新的邮件视图。打开您的 Laravel 项目文件夹,找到 /resources/views/ 目录,创建一个名为 emails 的子目录(如果还不存在),然后在 emails 目录中创建一个名为 verification.blade.php 的新视图。

这个视图将充当您的新验证电子邮件模板,您可以使用 Laravel 的模板引擎自由地实现它。

2. 修改验证邮件发送逻辑

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 变量来向通知类传递当前用户实例,这将允许我们在电子邮件模板中访问用户数据。

3. 创建通知类

创建通知类将为我们提供一个机会来指定新的邮件视图。在您的 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 变量以确保在邮件模板中有访问当前用户实例的能力。

4. 更改电子邮件模板

现在,我们已经成功地创建了一个新的邮件模板,并修改了验证邮件发送逻辑来使用它。在 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 的强大模板引擎来实现您想要的任何外观和感觉。