gpt4 book ai didi

laravel - Fortify - 如何自定义验证/密码重置电子邮件?

转载 作者:行者123 更新时间:2023-12-05 02:45:03 24 4
gpt4 key购买 nike

我正在为我的应用实现强化。我真的很困惑自定义当您点击密码重置/验证电子邮件路由时生成的默认电子邮件?

我可以在 vendor 中编辑它们,但每次更新都会给我带来问题。

必须有一个钩子(Hook)来提供替代电子邮件模板。

不幸的是,我找不到任何解释它是如何完成的文档。

是否需要添加:

public function sendEmailVerificationNotification()
{


}

我的用户模型?如果是这样,我如何生成返回验证 URL,因为它没有保存在数据库中?

任何帮助都会很棒。

谢谢!

最佳答案

这是 Laravel 8 中的解决方案。

1.) 通过命令创建通知

php artisan make:notification ResetPasswordNotification
<?php

namespace App\Notifications;

use Illuminate\Bus\Queueable;
use Illuminate\Contracts\Queue\ShouldQueue;
use Illuminate\Notifications\Messages\MailMessage;
use Illuminate\Auth\Notifications\ResetPassword;
use Illuminate\Notifications\Notification;
use Illuminate\Support\Facades\Lang;

class ResetPasswordNotification extends ResetPassword
{
use Queueable;

/**
* Create a new notification instance.
*
* @return void
*/
public $token;

public function __construct($token)
{
$this->token = $token;
}

/**
* Get the notification's delivery channels.
*
* @param mixed $notifiable
* @return array
*/
public function via($notifiable)
{
return ['mail'];
}

/**
* Get the mail representation of the notification.
*
* @param mixed $notifiable
* @return \Illuminate\Notifications\Messages\MailMessage
*/
public function toMail($notifiable)
{
if (static::$toMailCallback) {
return call_user_func(static::$toMailCallback, $notifiable, $this->token);
}

$url = url(config('app.url') . route('password.reset', [
'token' => $this->token,
'email' => $notifiable->getEmailForPasswordReset(),
], false));

return (new MailMessage)
->view(
'emails.reset_password', ['name'=>$notifiable->name,'url' => $url]
)
->subject(Lang::get('Reset Password'));
}

/**
* Get the array representation of the notification.
*
* @param mixed $notifiable
* @return array
*/
public function toArray($notifiable)
{
return [
//
];
}
}

2.) 在 app/Models/User.php 模型中。添加以下方法。

   public function sendPasswordResetNotification($token)
{
$this->notify(new ResetPasswordNotification($token));
}

3.) 现在在 views/emails/reset_password.blade.php 中创建一个电子邮件模板

Hi {{ $name }}, Please reset your password here. Click on the below link to reset the password.
<a href="{{ $url }}">RESET</a>

关于laravel - Fortify - 如何自定义验证/密码重置电子邮件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/66162320/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com