如何在通知中访问当前用户?

时间:2019-04-23 10:37:11

标签: php laravel laravel-5

在Laravel文档中,它指出:

  

使用通知外观

     

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

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(),但这使使用Facade的起点变得难以理解。

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

2 个答案:

答案 0 :(得分:0)

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

public function toMail($notifiable)
{

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

}

答案 1 :(得分:0)

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

$user_id = $notifiable->id;