Zoeken…


Gebeurtenissen en luisteraars gebruiken voor het verzenden van e-mails naar een nieuwe geregistreerde gebruiker

Laravel's evenementen maken het mogelijk om het waarnemerspatroon te implementeren. Dit kan worden gebruikt om een welkomst-e-mailbericht naar een gebruiker te sturen wanneer deze zich bij uw toepassing registreert.

Nieuwe evenementen en luisteraars kunnen worden gegenereerd met behulp van het artisanale opdrachtregelprogramma na het registreren van de gebeurtenis en hun specifieke luisteraar in de klasse App\Providers\EventServiceProvider .

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

Alternatieve notatie:

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

php artisan generate:event nu php artisan generate:event . Met deze opdracht worden alle overeenkomstige gebeurtenissen en luisteraars gegenereerd die hierboven zijn vermeld in de mappen App\Events en App\Listeners .

We kunnen meerdere luisteraars hebben voor een evenement zoals

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

NewUserRegistered is slechts een wrapper-klasse voor het nieuw geregistreerde gebruikersmodel:

class NewUserRegistered extends Event
{
    use SerializesModels;

    public $user;

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

Dit Event wordt afgehandeld door de SendWelcomeEmail luisteraar:

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

De laatste stap is om de gebeurtenis aan te roepen / te activeren wanneer een nieuwe gebruiker zich registreert. Dit kan worden gedaan in de controller, opdracht of service, waar u de logica voor gebruikersregistratie ook implementeert:

event(new NewUserRegistered($user));


Modified text is an extract of the original Stack Overflow Documentation
Licentie onder CC BY-SA 3.0
Niet aangesloten bij Stack Overflow