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;
    }
}