2017-12-06 6 views
2

こんにちは、私は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

答えて

2

protected $listen = [ 
     'Illuminate\Notifications\Events\NotificationSent' => [ 
     'App\Listeners\YourListenerClass', 
    ], 
]; 

とこれは私がやったことあるYourListnerClass

public function handle(NotificationSent $event) 
{ 

//access your $event data here 
//which includes notification details too 

} 
+0

であなたのイベントとリスナーを追加します。私は私の質問でこれを説明した。今度は、イベントが発生したときにそのメッセージをコントローラに戻すようにしたいのです。 – Himakar

+0

イベントは非同期です。何かが起こったときにトリガします。 – user2749200

+0

はい、それがトリガーされ、それを聞くリスナーがありますが、そのトリガーされたメッセージをキャッチしてコントローラーメソッド – Himakar

関連する問題