How to create custom event in symfony2

前端 未结 2 1342
醉酒成梦
醉酒成梦 2020-12-07 19:13

I want to create custom events called user_logged so that i can attach my listeners to those events.

I want to execute few functions whenever user has l

相关标签:
2条回答
  • 2020-12-07 19:32

    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 }
    
    0 讨论(0)
  • 2020-12-07 19:41

    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);
    
    0 讨论(0)
提交回复
热议问题