サーチ…


新しい登録ユーザーに電子メールを送信するためのイベントとリスナーの使用

LaravelのイベントではObserverパターンを実装できます。これは、アプリケーションに登録するたびに、ユーザーにウェルカムメールを送信するために使用できます。

新しいイベントとリスナーは、イベントとその特定のリスナーをApp\Providers\EventServiceProviderクラスに登録した後、職人のコマンドラインユーティリティを使用して生成できます。

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

代替記法:

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

php artisan generate:event実行します。このコマンドは、上記のApp\EventsApp\Listenersディレクトリにあるすべての対応するイベントとリスナーを生成します。

1つのイベントに複数のリスナーを置くことができます

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

NewUserRegisteredは、新しく登録されたUserモデルの単なるラッパークラスです。

class NewUserRegistered extends Event
{
    use SerializesModels;

    public $user;

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

このEventは、 SendWelcomeEmailリスナーによって処理されます。

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

最後のステップは、新しいユーザが登録するたびにイベントを呼び出すか、または呼び出すことです。これは、ユーザ登録ロジックを実装しているコントローラ、コマンド、またはサービスで行うことができます。

event(new NewUserRegistered($user));


Modified text is an extract of the original Stack Overflow Documentation
ライセンスを受けた CC BY-SA 3.0
所属していない Stack Overflow