我有一个Laravel软件包,用于触发位于供应商文件夹中的事件。
正在被解雇的事件的类是Mikea\Kicker\Events\Interviews\SurveyWasCompleted
我需要听取该事件,然后死掉并转储该事件的对象。
我在routes.php文件中添加了以下代码
Event::listen('Mikea\Kicker\Events\Interviews\SurveyWasCompleted', function($event){
dd($event);
});
但是,屏幕上不显示任何内容。我肯定知道SurveyWasCompleted
事件被调用,因为当我死亡并从事件内部转储时,我得到了数据。
我如何才能正确地听取要解雇的事件?
答案 0 :(得分:3)
您需要在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));
答案 1 :(得分:0)
您可能需要在EventServiceProvider而不是routes.php文件中注册它。
https://laravel.com/docs/5.2/events#registering-events-and-listeners
答案 2 :(得分:-1)
此外,如果是模型事件(如saving
或saved
),您可以将其直接放在模型中。
public function boot()
{
User::creating(function ($user) {
if ( ! $user->isValid()) {
return false;
}
});
}