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

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

Класс запускаемого события: Mikea\Kicker\Events\Interviews\SurveyWasCompleted

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

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

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

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

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


person Junior    schedule 12.01.2016    source источник


Ответы (2)


Вам необходимо зарегистрировать событие в EventServiceProvider

protected $listen = [
        'Mikea\Kicker\Events\Interviews\SurveyWasCompleted' => [
            'Mikea\Kicker\Listeners\SurveyWasCompletedListener',
        ]
    ];

Затем вам нужно создать Listener 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));
person rishal    schedule 13.01.2016

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

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

person vonec    schedule 13.01.2016
comment
Я тоже это сделал, но все еще не работает. Я добавил прослушиватель с именем Mikea\Kicker\Listener\IncreaseStoreQuota, а затем добавил его в файл EventsServiceProvider. затем внутри IncreaseStoreQuota я попытался умереть и сбросить $event. до сих пор не работает - person Junior; 13.01.2016