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));