Laravel - 应发送通知方法
Laravel - should send notification method
我有这样的配置,用户可以在其中设置它想要接收的通知,我不想在我调用的每个方法上都执行 If notify
。
我想知道我的通知 class 中是否有方法可以进行此验证,或者我该如何进行验证。
我想过一个解决方案,但它看起来很脏,我可以在 via
内部验证,如果用户设置为不接收
,则只是 return 一个空数组
而且我还在 Illuminate\Notifications\NotificationSender
中找到了一个名为 shouldSendNotification
的方法,但我不知道如何覆盖它,或者即使它正在使用这个 class,因为它似乎只适用于队列
OBS:Laravel 7
我想最简单的方法是在您的 User
模型中定义一个包装器方法并使用它来代替 notify
,如下所示:
public function _notify($notification)
{
if ($this->notify_condition) {
$this->notify($notification);
}
}
现在您使用 _notify
而不是 notify
via
以前是最好的地方,但 Laravel 现在支持 shouldSend
在通知上正是这种行为。
/**
* Determine if the notification should be sent.
*
* @param mixed $notifiable
* @param string $channel
* @return bool|null
*/
public function shouldSend($notifiable, $channel)
{
if ($user->isUnsubscribed()) {
return false;
}
}
我有这样的配置,用户可以在其中设置它想要接收的通知,我不想在我调用的每个方法上都执行 If notify
。
我想知道我的通知 class 中是否有方法可以进行此验证,或者我该如何进行验证。
我想过一个解决方案,但它看起来很脏,我可以在 via
内部验证,如果用户设置为不接收
而且我还在 Illuminate\Notifications\NotificationSender
中找到了一个名为 shouldSendNotification
的方法,但我不知道如何覆盖它,或者即使它正在使用这个 class,因为它似乎只适用于队列
OBS:Laravel 7
我想最简单的方法是在您的 User
模型中定义一个包装器方法并使用它来代替 notify
,如下所示:
public function _notify($notification)
{
if ($this->notify_condition) {
$this->notify($notification);
}
}
现在您使用 _notify
而不是 notify
via
以前是最好的地方,但 Laravel 现在支持 shouldSend
在通知上正是这种行为。
/**
* Determine if the notification should be sent.
*
* @param mixed $notifiable
* @param string $channel
* @return bool|null
*/
public function shouldSend($notifiable, $channel)
{
if ($user->isUnsubscribed()) {
return false;
}
}