Laravel Auth,获取在 Notification 中传递的默认 URL
Laravel Auth, Getting the default URL that is passed in Notification
我只是想在注册后更改默认身份验证的 toMail() 函数中通知中的 ->greeting() 。我想保留验证 URL 等。但我被卡住了。如果我重写 sendEmailVerificationnotification() ,整个邮件都会被更改。如何获取原本应该发送的 URL 或如何编辑原始身份验证以仅编辑 ->greeting('Hello') with Dear Name, ?
在用户模型中
public function sendEmailVerificationNotification()
{
$this->notify(new CustomVerifyEmail());
}
在 CustomVerifyEmail
/**
* Create a new notification instance.
*
* @return void
*/
public function __construct()
{
}
/**
* 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)
{
//dd($notifiable);
return (new MailMessage)
->greeting('Dear ' . $notifiable->name . ',')
->line('The introduction to the notification.')
->action('Notification Action', url())
->line('Thank you for using our application!');
}
/**
* Get the array representation of the notification.
*
* @param mixed $notifiable
* @return array
*/
public function toArray($notifiable)
{
return [
//
];
}
有一种方法可以自定义 VerifyEmail
发送的 MailMessage
,而无需覆盖任何方法或编写您自己的通知 class。
Illuminate\Auth\Notifications\VerifyEmail
class 实际上可以让您分配自己的回调来处理通知的 toMail
端。此回调接收 $notifiable
和 $verificationUrl
。你可以尝试这样的事情:
use Illuminate\Auth\Notifications\VerifyEmail;
use Illuminate\Notifications\Messages\MailMessage;
VerifyEmail::$toMailCallback = function ($notifiable, $verificationUrl) {
return (new MailMessage)
->greeting("Dear {$notifiable->name},")
->line('The introduction to the notification.')
->action('Notification Action', $verificationUrl)
->line('Thank you for using our application!');
};
您可以将其放入服务提供商的 boot
方法中。
如果您不想那样做,您可以扩展 VerifyEmail
通知以编写您自己的 toMail
方法,但可以访问获得验证的功能 URL.
use Illuminate\Auth\Notifications\VerifyEmail;
use Illuminate\Notifications\Messages\MailMessage;
class CustomVerifyEmail extends VerifyEmail
{
public function toMail($notifiable)
{
$verificationUrl = $this->verificationUrl($notifiable);
return (new MailMessage)
...
}
}
然后覆盖用户模型上的 sendEmailVerificationNotification
以发送自定义通知,就像您已经完成的那样。
我只是想在注册后更改默认身份验证的 toMail() 函数中通知中的 ->greeting() 。我想保留验证 URL 等。但我被卡住了。如果我重写 sendEmailVerificationnotification() ,整个邮件都会被更改。如何获取原本应该发送的 URL 或如何编辑原始身份验证以仅编辑 ->greeting('Hello') with Dear Name, ?
在用户模型中
public function sendEmailVerificationNotification()
{
$this->notify(new CustomVerifyEmail());
}
在 CustomVerifyEmail
/**
* Create a new notification instance.
*
* @return void
*/
public function __construct()
{
}
/**
* 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)
{
//dd($notifiable);
return (new MailMessage)
->greeting('Dear ' . $notifiable->name . ',')
->line('The introduction to the notification.')
->action('Notification Action', url())
->line('Thank you for using our application!');
}
/**
* Get the array representation of the notification.
*
* @param mixed $notifiable
* @return array
*/
public function toArray($notifiable)
{
return [
//
];
}
有一种方法可以自定义 VerifyEmail
发送的 MailMessage
,而无需覆盖任何方法或编写您自己的通知 class。
Illuminate\Auth\Notifications\VerifyEmail
class 实际上可以让您分配自己的回调来处理通知的 toMail
端。此回调接收 $notifiable
和 $verificationUrl
。你可以尝试这样的事情:
use Illuminate\Auth\Notifications\VerifyEmail;
use Illuminate\Notifications\Messages\MailMessage;
VerifyEmail::$toMailCallback = function ($notifiable, $verificationUrl) {
return (new MailMessage)
->greeting("Dear {$notifiable->name},")
->line('The introduction to the notification.')
->action('Notification Action', $verificationUrl)
->line('Thank you for using our application!');
};
您可以将其放入服务提供商的 boot
方法中。
如果您不想那样做,您可以扩展 VerifyEmail
通知以编写您自己的 toMail
方法,但可以访问获得验证的功能 URL.
use Illuminate\Auth\Notifications\VerifyEmail;
use Illuminate\Notifications\Messages\MailMessage;
class CustomVerifyEmail extends VerifyEmail
{
public function toMail($notifiable)
{
$verificationUrl = $this->verificationUrl($notifiable);
return (new MailMessage)
...
}
}
然后覆盖用户模型上的 sendEmailVerificationNotification
以发送自定义通知,就像您已经完成的那样。