Buscar..


Uso de eventos y escuchas para enviar correos electrónicos a un nuevo usuario registrado

Los eventos de Laravel permiten implementar el patrón Observer. Esto se puede usar para enviar un correo electrónico de bienvenida a un usuario cuando se registran en su aplicación.

Se pueden generar nuevos eventos y escuchas usando la utilidad de línea de comandos de artisan después de registrar el evento y su escucha particular en la clase App\Providers\EventServiceProvider .

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

Notación alternativa:

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

Ahora ejecuta php artisan generate:event . Este comando generará todos los eventos y escuchas correspondientes mencionados anteriormente en los directorios App\Events y App\Listeners respectivamente.

Podemos tener múltiples oyentes en un solo evento como

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

NewUserRegistered es solo una clase de envoltorio para el modelo de usuario recién registrado:

class NewUserRegistered extends Event
{
    use SerializesModels;

    public $user;

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

Este Event será manejado por el oyente 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);
        });
    }
}

El último paso es llamar / disparar el evento cada vez que un nuevo usuario se registre. Esto se puede hacer en el controlador, comando o servicio, donde sea que implemente la lógica de registro de usuario:

event(new NewUserRegistered($user));


Modified text is an extract of the original Stack Overflow Documentation
Licenciado bajo CC BY-SA 3.0
No afiliado a Stack Overflow