【问题标题】:Laravel 5.3 - Single Notification File for Different User Collections?Laravel 5.3 - 不同用户集合的单个通知文件?
【发布时间】:2017-05-29 09:01:37
【问题描述】:

给定100 关注者,一旦我完成了一个待办事项,就会触发一个通知。问题是80 他们只需要电子邮件通知,另一个20 只需要短信通知。这是否意味着我需要像这样使用 2 个不同的通知调用:

Notification::send($emailOnlyUsers, new TodoCompletedEmail($todo));

只有邮件通道,然后:

Notification::send($smsOnlyUsers, new TodoCompletedSms($todo));

哪个只有短信频道?或者是否可以在 TodoCompleted Notification 文件中包含 $emailOnlyUsers$smsOnlyUsers 的逻辑,其中两个通道一起列出以在一个文件中处理不同用户的不同通道?像这样的:

$user->notify(new TodoCompletedEmail($todo));

我问是因为我宁愿在一个具有不同频道的文件中执行此操作,但我认为我不能,因为 Laravel 的 Notification 需要传递的用户集合(在这种情况下实际上有 2 个用户集合),但更多的渠道/不同的集合是可能的,并且必须为每个频道/用户集合创建一个新的通知文件以获取相同的TodoCompleted 通知。有人可以阐明是否可以将它放在一个文件中,如果可以,如何?

【问题讨论】:

    标签: php laravel laravel-5 laravel-5.3


    【解决方案1】:

    这样的事情呢?

    foreach($users as $user)
        $user->notify(new TodoCompleted($todo));
    

    然后在你的 TodoCompleted 类中

    private $todo;
    
    /**
     * Create a new notification instance.
     *
     * @param $todo
     */
    public function __construct($todo)
    {
        $this->todo = $todo;
    }
    
    /**
     * Get the notification's delivery channels.
     *
     * @param  mixed  $notifiable
     * @return array
     */
    public function via($notifiable)
    {
        // Change "prefer_sms" to whatever logic you're using to determine if the user should be sent sms or email.
        if($notifiable->prefers_sms)
            return ['sms', 'database'];
    
        return ['mail', 'database'];
    }
    

    【讨论】:

      猜你喜欢
      • 2017-05-07
      • 2017-06-19
      • 2017-04-08
      • 2017-03-17
      • 1970-01-01
      • 1970-01-01
      • 2017-04-27
      • 1970-01-01
      • 2017-04-02
      相关资源
      最近更新 更多