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