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


Modified text is an extract of the original Stack Overflow Documentation
Sous licence CC BY-SA 3.0
Non affilié à Stack Overflow