How to create custom event in symfony2
Create a class which extends Symfony\Component\EventDispatcher\Event
.
Then, use the event dispatcher service to dispatch the event:
$eventDispatcher = $container->get('event_dispatcher');$eventDispatcher->dispatch('custom.event.identifier', $event);
You can register your event listener service like so:
tags: - { name: kernel.event_listener, event: custom.event.identifier, method: onCustomEvent }
This answer is little bit extend answer.
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/Event/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; }}
anywhere you wish, for example in home page controller
use AppBundle\Event\HomePageEvent; // ... $eventDispatcher = $this->get('event_dispatcher'); $event = new HomePageEvent(); $event->setCode(200); $eventDispatcher->dispatch('custom.event.home_page_event', $event);