如何监听 Laravel 5.2 中的事件?
How to listen for an event in Laravel 5.2?
我有一个 Laravel 包,它触发位于 vendor 文件夹中的事件。
正在触发的事件 class 是 Mikea\Kicker\Events\Interviews\SurveyWasCompleted
我需要监听该事件,然后结束并转储该事件的对象。
我在 routes.php 文件中添加了以下代码
Event::listen('Mikea\Kicker\Events\Interviews\SurveyWasCompleted', function($event){
dd($event);
});
但是,屏幕上没有显示任何内容。我确定调用了 SurveyWasCompleted
事件,因为当我死去并从事件内部转储时,我得到了数据。
如何正确监听要触发的事件?
您可能需要在 EventServiceProvider 而不是 routes.php 文件中注册它。
https://laravel.com/docs/5.2/events#registering-events-and-listeners
您需要在 EventServiceProvider 中注册事件
protected $listen = [
'Mikea\Kicker\Events\Interviews\SurveyWasCompleted' => [
'Mikea\Kicker\Listeners\SurveyWasCompletedListener',
]
];
然后你需要创建一个监听器SurveyWasCompletedListener
namespace Mikea\Kicker\Listeners;
use Mikea\Kicker\Events\Interviews\SurveyWasCompleted;
use Illuminate\Queue\InteractsWithQueue;
use Illuminate\Contracts\Queue\ShouldQueue;
class SurveyWasCompletedListener
{
/**
* Create the event listener.
*
* @return void
*/
public function __construct()
{
//
}
/**
* Handle the event.
*
* @param SurveyWasCompleted $event
* @return void
*/
public function handle(SurveyWasCompleted $event)
{
//do something
}
}
显然您需要使用
触发事件
Event::fire(new SurveyWasCompleted($data));
我有一个 Laravel 包,它触发位于 vendor 文件夹中的事件。
正在触发的事件 class 是 Mikea\Kicker\Events\Interviews\SurveyWasCompleted
我需要监听该事件,然后结束并转储该事件的对象。
我在 routes.php 文件中添加了以下代码
Event::listen('Mikea\Kicker\Events\Interviews\SurveyWasCompleted', function($event){
dd($event);
});
但是,屏幕上没有显示任何内容。我确定调用了 SurveyWasCompleted
事件,因为当我死去并从事件内部转储时,我得到了数据。
如何正确监听要触发的事件?
您可能需要在 EventServiceProvider 而不是 routes.php 文件中注册它。
https://laravel.com/docs/5.2/events#registering-events-and-listeners
您需要在 EventServiceProvider 中注册事件
protected $listen = [
'Mikea\Kicker\Events\Interviews\SurveyWasCompleted' => [
'Mikea\Kicker\Listeners\SurveyWasCompletedListener',
]
];
然后你需要创建一个监听器SurveyWasCompletedListener
namespace Mikea\Kicker\Listeners;
use Mikea\Kicker\Events\Interviews\SurveyWasCompleted;
use Illuminate\Queue\InteractsWithQueue;
use Illuminate\Contracts\Queue\ShouldQueue;
class SurveyWasCompletedListener
{
/**
* Create the event listener.
*
* @return void
*/
public function __construct()
{
//
}
/**
* Handle the event.
*
* @param SurveyWasCompleted $event
* @return void
*/
public function handle(SurveyWasCompleted $event)
{
//do something
}
}
显然您需要使用
触发事件Event::fire(new SurveyWasCompleted($data));