Suche…


Verwenden von Ereignissen und Listenern zum Senden von E-Mails an einen neuen registrierten Benutzer

Die Ereignisse von Laravel ermöglichen die Implementierung des Observer-Musters. Dies kann verwendet werden, um eine Begrüßungs-E-Mail an einen Benutzer zu senden, wenn er sich in Ihrer Anwendung registriert.

Neue Ereignisse und Listener können mit dem handwerklichen Befehlszeilenprogramm generiert werden, nachdem das Ereignis und der jeweilige Listener in App\Providers\EventServiceProvider Klasse App\Providers\EventServiceProvider .

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

Alternative Notation:

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

php artisan generate:event nun php artisan generate:event . Dieser Befehl generiert alle entsprechenden Ereignisse und Listener, die oben in den Verzeichnissen App\Events und App\Listeners sind.

Wir können mehrere Zuhörer für ein einzelnes Ereignis haben

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

NewUserRegistered ist nur eine Wrapper-Klasse für das neu registrierte Benutzermodell:

class NewUserRegistered extends Event
{
    use SerializesModels;

    public $user;

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

Dieses Event wird vom SendWelcomeEmail Listener verarbeitet:

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

Der letzte Schritt ist das Aufrufen / Auslösen des Ereignisses, wenn sich ein neuer Benutzer registriert. Dies kann in der Steuerung, im Befehl oder im Dienst erfolgen, wo immer Sie die Benutzerregistrierungslogik implementieren:

event(new NewUserRegistered($user));


Modified text is an extract of the original Stack Overflow Documentation
Lizenziert unter CC BY-SA 3.0
Nicht angeschlossen an Stack Overflow