symfony2 prepersist event php symfony events observer-pattern symfony-components

php - prepersist - Cómo crear eventos personalizados en Symfony2



listener symfony 4 (2)

Quiero crear eventos personalizados llamados user_logged para que pueda adjuntar mis oyentes a esos eventos.

Quiero ejecutar algunas funciones cuando el usuario ha iniciado sesión.


Cree una clase que amplíe Symfony/Component/EventDispatcher/Event .

Luego, use el servicio del despachador de eventos para enviar el evento:

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

Puede registrar su servicio de escucha de eventos de la siguiente manera:

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


Esta respuesta es un poco ampliar la 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; } }

en cualquier lugar que desee, por ejemplo, en el controlador de la página de inicio

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