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