サーチ…
新しい登録ユーザーに電子メールを送信するためのイベントとリスナーの使用
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\Events
とApp\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