Sök…


Använda händelse och lyssnare för att skicka e-post till en ny registrerad användare

Laravels händelser gör det möjligt att implementera Observer-mönstret. Detta kan användas för att skicka ett välkomstmeddelande till en användare när de registrerar sig på din ansökan.

Nya händelser och lyssnare kan genereras med hjälp av det hantverkande kommandoradsverktyget efter registreringen av händelsen och deras speciella lyssnare i App\Providers\EventServiceProvider klassen.

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

Alternativ notation:

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

Kör nu php artisan generate:event . Detta kommando genererar alla motsvarande händelser och lyssnare som nämns ovan i respektive App\Events och App\Listeners kataloger.

Vi kan ha flera lyssnare till en enda händelse som

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

NewUserRegistered är bara en omslagsklass för den nyregistrerade användarmodellen:

class NewUserRegistered extends Event
{
    use SerializesModels;

    public $user;

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

Denna Event hanteras av SendWelcomeEmail lyssnaren:

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

Det sista steget är att ringa / avfyra händelsen när en ny användare registrerar sig. Detta kan göras i controller, kommando eller tjänst, var du än implementerar användarregistreringslogiken:

event(new NewUserRegistered($user));


Modified text is an extract of the original Stack Overflow Documentation
Licensierat under CC BY-SA 3.0
Inte anslutet till Stack Overflow