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