Recherche…
Utiliser Event et Listeners pour envoyer des emails à un nouvel utilisateur enregistré
Les événements de Laravel permettent de mettre en œuvre le pattern Observer. Cela peut être utilisé pour envoyer un email de bienvenue à un utilisateur chaque fois qu'il s'inscrit sur votre application.
De nouveaux événements et écouteurs peuvent être générés à l'aide de l'utilitaire de ligne de commande artisan après l'enregistrement de l'événement et de son écouteur particulier dans la classe App\Providers\EventServiceProvider
.
protected $listen = [
'App\Events\NewUserRegistered' => [
'App\Listeners\SendWelcomeEmail',
],
];
Notation alternative:
protected $listen = [
\App\Events\NewUserRegistered::class => [
\App\Listeners\SendWelcomeEmail::class,
],
];
Maintenant, exécutez php artisan generate:event
. Cette commande génère tous les événements et les écouteurs correspondants mentionnés ci-dessus dans les répertoires App\Events
et App\Listeners
respectivement.
Nous pouvons avoir plusieurs auditeurs pour un seul événement comme
protected $listen = [
'Event' => [
'Listner1', 'Listener2'
],
];
NewUserRegistered
est juste une classe wrapper pour le modèle d'utilisateur nouvellement enregistré:
class NewUserRegistered extends Event
{
use SerializesModels;
public $user;
/**
* Create a new event instance.
*
* @return void
*/
public function __construct(User $user)
{
$this->user = $user;
}
}
Cet Event
sera géré par le listener 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);
});
}
}
La dernière étape consiste à appeler / déclencher l'événement chaque fois qu'un nouvel utilisateur s'inscrit. Cela peut être fait dans le contrôleur, la commande ou le service, où que vous implémentiez la logique d'enregistrement de l'utilisateur:
event(new NewUserRegistered($user));