уведомление о регистрации нового пользователя

Я использовал два руководства для создания кода, который уведомляет меня о регистрации нового пользователя. почтовые уведомления и redirect-login-register-add-method /

Это работает сейчас

Я просто отправляю уведомление на адрес электронной почты по умолчанию, определенный здесь в моей модели User:

Это моя желанная цель

Я хочу отправить электронное письмо новому зарегистрированному пользователю в уведомлении по электронной почте. Кроме того, я хочу настроить получателя для этого конкретного HelloUser уведомления.

public function routeNotificationForMail()
{
    return '[email protected]';
}

Уведомление запускается кодом в моем RegisterController.php:

protected function redirectTo()
{
    $user = Auth::user();
    $user->notify(new \App\Notifications\HelloUser());
    return '/'; // redirects to main page
}

Вышеупомянутое решение работает, но после многих попыток я все еще не могу получить этот расширенный результат:

to do 1

У меня будет несколько уведомлений, которые я хочу отправить на 2-3 письма, а не только на одно.

Моя попытка

В моем файле уведомлений App\Notifications\\HelloUser.php я попытался добавить лишнюю строку. (Обратите внимание, что строка теперь прокомментирована)

public function toMail($notifiable)
{
    return (new MailMessage)
                ->line('The introduction to the notification.')
                ->action('Notification Action', url('/'))
                ->line('The new user email is ');
                // ->to('[email protected]');
}

... но я потерпел неудачу. Я могу определить глобального получателя, как описано здесь, в документации

Мой вопрос # 1

Как я могу определить отдельного получателя для каждого Notification?

TO DO 2

Я также попытался включить электронную почту недавно зарегистрированного пользователя в уведомление, отправленное по электронной почте. Для этого я попытался скопировать свое решение из Mailables. Итак, в RegisterControler.php я попытался передать переменную $ user в функцию:

protected function redirectTo()
{
    $user = Auth::user();
    $user->notify(new \App\Notifications\HelloUser($user));
    return '/';
}

а затем в моем Notification файле App\Notifications\HelloUser я сделал следующее:

public $user;

public function __construct($user)
{
    $email = $user->email;
}

в надежде, что эта часть произведет уведомление с электронной почтой нового пользователя:

public function toMail($notifiable)
{
    return (new MailMessage)
                ->line('The introduction to the notification.')
                ->action('Notification Action', url('/'))
                ->line('The new user email is '.$user->email);
}

Результат: я просто получаю Undefined variable: user.

TO DO

Как заставить этот код работать?

Спасибо за уделенное время.

============= Редактировать: по запросу @Arun_jai я помещаю здесь dd ($ notifiable). Кажется, что он сгенерирован правильно, и объект является всего лишь экземпляром модели User. Соответствующая часть:

 #attributes: array:6 [▼
"name" => "Peter attempt 16"
"email" => "[email protected]"
"password" => "$2t9WHLFY14XNf0$nj7TYDYAxiZ/kdfrUy$1vC2"
"updated_at" => "2018-01-18 07:08:12"
"created_at" => "2018-01-18 07:08:12"
"id" => 270
]

person Peter    schedule 18.01.2018    source источник
comment
Можете ли вы сделать dd на $ notifiable и посмотреть, что у вас есть, пожалуйста   -  person Arun jai    schedule 18.01.2018
comment
Я только что обновил свой пост, добавив dd($notifiable). Имейте в виду, что сейчас я только пытаюсь настроить получателя для HelloUser Уведомления.   -  person Peter    schedule 18.01.2018


Ответы (1)


Что касается ошибки Undefined variable: user, попробуйте создать экземпляр переменной $user в конструкторе вместо сообщения электронной почты. Ваш конструктор должен выглядеть так:

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

Затем вы сможете получить электронную почту пользователей, вызвав ее с помощью $ this-> user в любом месте этого класса, поэтому ваше создание MailMessage будет выглядеть так:

return (new MailMessage)
            ->line('The introduction to the notification.')
            ->action('Notification Action', url('/'))
            ->line('The new user email is ' . $this->user->email);
person Tadas    schedule 18.01.2018
comment
Это действительно работает! Кажется, я пропустил этот вариант $this->user->email в своем new MailMessage ответе. Спасибо - person Peter; 18.01.2018