Поиск…


Использование событий и прослушивателей для отправки электронной почты новому зарегистрированному пользователю

События Laravel позволяют реализовать шаблон Observer. Это можно использовать для отправки приветственного письма пользователю, когда они регистрируются в вашем приложении.

Новые события и слушатели могут быть сгенерированы с помощью утилиты командной строки artisan после регистрации события и их конкретного слушателя в классе App\Providers\EventServiceProvider .

protected $listen = [
    'App\Events\NewUserRegistered' => [
        'App\Listeners\SendWelcomeEmail',
    ],
];

Альтернативная нотация:

protected $listen = [
    \App\Events\NewUserRegistered::class => [
        \App\Listeners\SendWelcomeEmail::class,
    ],
];

Теперь выполните php artisan generate:event . Эта команда будет генерировать все соответствующие события и прослушиватели, упомянутые выше, в App\Events и App\Listeners соответственно.

Мы можем иметь несколько слушателей для одного события, например

protected $listen = [
    'Event' => [
        'Listner1', 'Listener2'
    ],
];

NewUserRegistered - это всего лишь класс-оболочка для недавно зарегистрированной модели пользователя:

class NewUserRegistered extends Event
{
    use SerializesModels;

    public $user;

    /**
     * Create a new event instance.
     *
     * @return void
     */
    public function __construct(User $user)
    {
        $this->user = $user;
    }
}

Это Event будет обработано слушателем SendWelcomeEmail :

class SendWelcomeEmail
{
    /**
     * Handle the event.
     *
     * @param  NewUserRegistered  $event
     */
    public function handle(NewUserRegistered $event)
    {
        //send the welcome email to the user
        $user = $event->user;
        Mail::send('emails.welcome', ['user' => $user], function ($message) use ($user) {
                $message->from('[email protected]', 'John Doe');
                $message->subject('Welcome aboard '.$user->name.'!');
                $message->to($user->email);
        });
    }
}

Последний шаг - вызывать / запускать событие каждый раз, когда регистрируется новый пользователь. Это можно сделать в контроллере, команде или службе, где бы вы не реализовали логику регистрации пользователя:

event(new NewUserRegistered($user));


Modified text is an extract of the original Stack Overflow Documentation
Лицензировано согласно CC BY-SA 3.0
Не связан с Stack Overflow