Quiero crear eventos personalizados llamados user_logged
para que pueda adjuntar mis oyentes a esos eventos.Cómo crear un evento personalizado en symfony2
quiero para ejecutar algunas funciones cada vez que el usuario ha iniciado sesión.
Quiero crear eventos personalizados llamados user_logged
para que pueda adjuntar mis oyentes a esos eventos.Cómo crear un evento personalizado en symfony2
quiero para ejecutar algunas funciones cada vez que el usuario ha iniciado sesión.
crear una clase que se extiende Symfony\Component\EventDispatcher\Event
.
A continuación, utilice el servicio de eventos distribuidor para distribuir el evento:
$eventDispatcher = $container->get('event_dispatcher');
$eventDispatcher->dispatch('custom.event.identifier', $event);
Puede registrar su servicio de escucha de eventos de este modo:
tags:
- { name: kernel.event_listener, event: custom.event.identifier, method: onCustomEvent }
Esta respuesta es poco extender 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/Evento/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;
}
}
cualquier lugar que desee, por ejemplo en el hogar Controlador de página
use AppBundle\Event\HomePageEvent;
// ...
$eventDispatcher = $this->get('event_dispatcher');
$event = new HomePageEvent();
$event->setCode(200);
$eventDispatcher->dispatch('custom.event.home_page_event', $event);
¡Genial! ¡muy útil! – iamjc015
@JCFrane bienvenida en cualquier momento! –
Buena respuesta. Además, hay más detalles aquí: http://symfony.com/doc/current/components/event_dispatcher/introduction.html – gview
De hecho, pero esta es una manera bastante simple de comenzar. – Lusitanian
excelente respuesta !!, ahora la única pregunta es dónde es el mejor lugar para enviar un evento personalizado ?, ¿tal vez un servicio? – Nico