Как прослушать событие в Laravel 5.2?

У меня есть пакет Laravel, который запускает событие, которое находится в папке поставщика.

Класс события, который запускается Mikea\Kicker\Events\Interviews\SurveyWasCompleted

Мне нужно прослушать это событие, а затем умереть и сбросить объект события.

Я добавил следующий код в мой файл rout.php

Event::listen('Mikea\Kicker\Events\Interviews\SurveyWasCompleted', function($event){
dd($event);
});

Однако на экране ничего не отображается. Я точно знаю, что SurveyWasCompleted событие вызывается, потому что когда я умираю и сбрасываю изнутри события, я получаю данные.

Как я могу правильно слушать событие, которое будет запущено?

2

Решение

Вам необходимо зарегистрировать событие в 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));
2

Другие решения

Возможно, вам придется зарегистрировать его в EventServiceProvider, а не в файле rout.php.

https://laravel.com/docs/5.2/events#registering-events-and-listeners

0

Также, если это модельное событие (например, saving или же saved), вы можете вставить его прямо в самой модели.

public function boot()
{
User::creating(function ($user) {
if ( ! $user->isValid()) {
return false;
}
});
}
-1
По вопросам рекламы [email protected]