【问题标题】:How to access the current user within a Notification?如何在通知中访问当前用户?
【发布时间】:2019-11-06 20:54:18
【问题描述】:

在 Laravel 文档中,它声明:

使用通知外观

或者,您可以发送 通过 Notification 门面通知。这主要是有用的 当您需要向多个应通知实体发送通知时 比如用户集合。要使用外观发送通知, 将所有应通知实体和通知实例传递给 发送方法:

Notification::send($users, new InvoicePaid($invoice));

所以我在我的控制器中这样做:

public function index()
{
  $subscribers = Subscribers::all();
  
  Notification::send($subscribers, new NewVacancy($subscribers));
}

这是我的通知类

class NewVacancy extends Notification implements ShouldQueue
{
use Queueable;

public $subscriber; 

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

public function toMail($notifiable)
{
 
  return (new MailMessage)->view(
    'mail.new-vacancy', 
    ['uuid' => $this->subscriber->uuid]// This fails as $subscriber is a collection
  );
}

....

问题在于,在 NewVacancy 类中,传入的 $subscriber 是所有订阅者的完整集合,而不是正在发送的单个通知。

现在我知道我可以在 $subscribers 上循环并每次触发 Notification::send() ,但这违背了使用外观开始的意义。

总体目标是向所有$subscribers 发送电子邮件,并能够使用刀片模板传递独特的订阅者数据。

【问题讨论】:

    标签: php laravel laravel-5


    【解决方案1】:

    我发现您可以通过传递给toMail() 方法的$notifiable 实体访问当前用户。

    public function toMail($notifiable)
    {
    
      return (new MailMessage)->view(
        'mail.new-vacancy', 
        ['uuid' => $notifiable->uuid]
      );
    
    }
    

    【讨论】:

      【解决方案2】:

      请注意 $notifiable 代表正在收到通知的用户对象。

      $user_id = $notifiable->id;
      

      【讨论】:

      • 这个“答案”是多余的,因为它复制了我自己在 4 月发布的答案...
      猜你喜欢
      • 2011-04-08
      • 1970-01-01
      • 1970-01-01
      • 2011-11-10
      • 2023-03-06
      • 2019-03-19
      • 2017-10-14
      • 2019-03-25
      • 2021-10-28
      相关资源
      最近更新 更多