Как получить доступ к текущему пользователю в уведомлении? - PullRequest
0 голосов
/ 23 апреля 2019

В документах 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(), но это лишает смысла использовать фасад для начала.

Общая цель - отправлять электронные письма всем $subscribers с возможностью передачи уникальных данных о подписчике с использованием шаблона блэйда.

1 Ответ

0 голосов
/ 23 апреля 2019

Я обнаружил, что вы можете получить доступ к текущему пользователю через объект $notifiable, который передается в метод toMail().

public function toMail($notifiable)
{

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

}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...