Ich versuche, benutzerdefinierte Ereignis zu erstellen, aber es kann nicht funktionieren.Symfony2 benutzerdefinierte Ereignis Dispatcher und Listener
Was ich getan habe:
1.Ich erstellt Ereignis identifiziert Klasse in
namespace Path\ToBundle;
final class CookieEvents
{
const COOKIE_EVENT = 'cookie.event';
}
2.Created Ereignis
namespace Path\ToBundle\EventListener;
use Path\ToBundle\Event\FilterResponseEvent;
class ResponseListener
{
public function onCookieInit(FilterResponseEvent $event)
{
//some complex logic goes here
echo('test');
}
}
3.created Ereignis-Listener
namespace Path\ToBundle\Event;
use Symfony\Component\EventDispatcher\Event;
use Symfony\Component\HttpFoundation\Response;
class FilterResponseEvent extends Event
{
protected $response;
public function __construct(Response $response)
{
$this->response = $response;
}
public function getResponse()
{
return $this->response;
}
}
4.Tried Ereignis-Listener innerhalb service.yml
kernel.listener.cookie.event:
class: Path\ToBundle\Event\ResponseListener
tags:
- { name: kernel.event_listener, event: cookie.event, method: onCookieInit }
5.Next Ich versuche -Ereignisses an Innen-Controller-Aktion
//includes before class
use Symfony\Component\EventDispatcher\EventDispatcher;
use Path\ToBundle\Event\FilterResponseEvent;
//inside controller action
//... $response variable is created
$dispatcher = new EventDispatcher();
$event = new FilterResponseEvent($response);
$dispatcher->dispatch(CookieEvents::COOKIE_EVENT, $event);
return $response;
//EOF controller action
Was ich versuche zu registrieren zu erreichen Ereignis in der Lage sein Feuer auf bestimmte Aktionen. Leider funktioniert das nicht. Das Konzept der Ereignisse ist neu für mich und ich bin immer noch nicht sicher, was ich hier mache, aber es ist das, was ich aus den Beispielen herausfinden konnte. Vielleicht könnte mir jemand sagen, ob ich richtig richte und mich korrigiere? Wenn nicht, wird einige Anleitung noch mehr geschätzt.
Für den Dispatcher Ihre '$ Dispatcher = $ this-> verwenden sollten get ('event_dispatcher') ', da Sie eine andere Instanz verwenden werden. – qooplmao
Dies ist ein großartiges Beispiel für das Einrichten benutzerdefinierter Ereignisse – lopsided