こんにちは、私はlaravelのイベントとリスナーの初心者です。だから、これを実現する方法を私に説明してください:laravelのmessageSentイベントを聞くには5.5
目的:
ユーザーに電子メールを送信します。そして、電子メールが送信されるかどうかを知る。
私の理解:
Laravelは、電子メールが送信された後に起動するようにイベントIlluminate\Mail\Events\MessageSent
を内蔵しており、私は、イベントをリスニングするリスナーを記述する必要があります。
:
電子メールを送信するには:
Mail::to($receiverAddress)->send(new SendNewUserPassword($content));
これは正常に動作しています。ユーザーに電子メールを送信することができます。 messageSentイベントを聞くには
、私はこのリスナーを作成しました:
<?php
namespace App\Listeners;
use Illuminate\Mail\Events\MessageSent;
use Illuminate\Queue\InteractsWithQueue;
use Illuminate\Contracts\Queue\ShouldQueue;
class LogSentMessage
{
/**
* Create the event listener.
*
* @return void
*/
public function __construct()
{
//
}
/**
* Handle the event.
*
* @param MessageSent $event
* @return void
*/
public function handle(MessageSent $event)
{
return $event->message;
}
}
イベントを登録するには:コントローラで
protected $listen = [
'App\Events\Event' => [
'App\Listeners\EventListener',
],
'Illuminate\Mail\Events\MessageSent' => [
'App\Listeners\LogSentMessage',
],
];
:
event(new MessageSent())
私に返すためにどのようにを案内してください。コントローラからリスナで処理されたメッセージ。私の上記のアプローチが間違っている場合、それを達成する方法を教えてください。これは私がapiのために使用しているので、メールを送ることが成功するか失敗するかを知りたいです。あなたのEventServiceProvider
で
であなたのイベントとリスナーを追加します。私は私の質問でこれを説明した。今度は、イベントが発生したときにそのメッセージをコントローラに戻すようにしたいのです。 – Himakar
イベントは非同期です。何かが起こったときにトリガします。 – user2749200
はい、それがトリガーされ、それを聞くリスナーがありますが、そのトリガーされたメッセージをキャッチしてコントローラーメソッド – Himakar