Как создать пользовательское событие в symfony2

Я хочу создать пользовательские события, называемые user_logged чтобы я мог присоединить слушателей к этим событиям.

Я хочу выполнять несколько функций всякий раз, когда пользователь вошел в систему.

Related of "Как создать пользовательское событие в symfony2"

Создайте класс, который расширяет Symfony\Component\EventDispatcher\Event .

Затем используйте диспетчер событий для отправки события:

 $eventDispatcher = $container->get('event_dispatcher'); $eventDispatcher->dispatch('custom.event.identifier', $event); 

Вы можете зарегистрировать службу прослушивателя событий так:

 tags: - { name: kernel.event_listener, event: custom.event.identifier, method: onCustomEvent } 

Этот ответ немного расширяет ответ .

services.yml

 custom.event.home_page_event: class: AppBundle\EventSubscriber\HomePageEventSubscriber tags: - { name: kernel.event_listener, event: custom.event.home_page_event, method: onCustomEvent } 

AppBundle / EventSubscriber / HomePageEventSubscriber.php

 namespace AppBundle\EventSubscriber; class HomePageEventSubscriber { public function onCustomEvent($event) { var_dump($event->getCode()); } } 

AppBundle / Событие / HomePageEvent.php

 namespace AppBundle\Event; use Symfony\Component\EventDispatcher\Event; class HomePageEvent extends Event { private $code; public function setCode($code) { $this->code = $code; } public function getCode() { return $this->code; } } 

в любом месте, например, в контроллере домашней страницы

  use AppBundle\Event\HomePageEvent; // ... $eventDispatcher = $this->get('event_dispatcher'); $event = new HomePageEvent(); $event->setCode(200); $eventDispatcher->dispatch('custom.event.home_page_event', $event);