How to create custom event in symfony2 How to create custom event in symfony2 php php

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);