Sto tentando di creare un evento personalizzato, ma non riesco a farlo funzionare.Symfony2 dispatcher di eventi personalizzati e listener
quello che ho fatto:
1.I creato classe identificare eventi in
eventonamespace Path\ToBundle;
final class CookieEvents
{
const COOKIE_EVENT = 'cookie.event';
}
2.Created
namespace Path\ToBundle\EventListener;
use Path\ToBundle\Event\FilterResponseEvent;
class ResponseListener
{
public function onCookieInit(FilterResponseEvent $event)
{
//some complex logic goes here
echo('test');
}
}
evento 3.created ascoltatore
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. Provato per registrare listener di eventi all'interno service.yml
kernel.listener.cookie.event:
class: Path\ToBundle\Event\ResponseListener
tags:
- { name: kernel.event_listener, event: cookie.event, method: onCookieInit }
5.Next cerco di inviare evento all'interno azione di controllo
//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
Quello che sto cercando di realizzare è quello di poter evento fuoco su determinate azioni. Sfortunatamente questo non funziona. Il concetto di eventi è nuovo per me e, non sono ancora sicuro di quello che sto facendo qui, ma è quello che sono riuscito a capire dagli esempi. Forse qualcuno potrebbe dirmi se sto andando nella giusta direzione e correggermi? In caso contrario, alcune indicazioni sono ancora più apprezzate.
per il dispatcher vostra dovrebbe usare '$ dispatcher = $ this-> get ('event_dispatcher') 'dato che userete un'istanza diversa. – qooplmao
Questo è un ottimo esempio di come impostare eventi personalizzati – lopsided