ich zu einem benutzerdefinierten Ereignis hören möchte ich erstellt:Symfony2: automatisch das Hinzufügen eines Zuhörers zu einem Dispatcher
Hier ist die Veranstaltung:
class UserActivationEvent extends Event
{
const NAME = 'my_app.user.activation';
}
ich einen Event-Dispatcher dank der folgenden Service haben:
event_dispatcher:
class: Symfony\Component\EventDispatcher\ContainerAwareEventDispatcher
arguments:
- "@service_container"
ich versende meine Veranstaltung in meinem Code:
$dispatcher = $this->get('event_dispatcher');
$event = new UserActivationEvent();
$dispatcher->dispatch(UserActivationEvent::NAME, $event);
Ich habe einen Zuhörer:
class UserActivationListener
{
public function onUserActivation($event)
{
var_dump('I am listening'); exit();
}
}
, die ich als Dienst registriert:
my_app.legacy.listener.user_activation:
class: Acme\LegacyBundle\EventListener\UserActivationListener
tags:
- { name: my_app.event_listener, event: my_app.user.activation }
Aber dieser Code löst nicht meine Zuhörer. Ich bin Kraft, um die folgenden Zeilen in meinem Skript hinzuzufügen:
Dann kann ich sehen, der Hörer heißt.
Meine Frage:
Gibt es eine Möglichkeit, einen Zuhörer an einen Dispatcher in der Service Erklärung hinzufügen? Ich möchte nicht, dass mein Skript die Zuhörer kennt.
Ja tatsächlich fehlte mir nur der kernel.event_listener, aber die Methode ist nicht obligatorisch, wenn sie nach dem Ereignis benannt ist (in meinem Fall onMyAppUserActivation) .. aber ich hoffte, einen benutzerdefinierten Namen wie my_app.event_listener zu verwenden kernel.event_listener :( – jiboulex
Richtig, ich sehe nur, dass Sie die Methode wie den Namen des Ereignisses benennen, also ist die Methode nicht zwingend. Für den Listener-Tag-Namen ist es etwas, das auf eingebauten Tag-Namen basiert und nicht kann Gewohnheit ohne viele Überschreibungen – chalasr
gut danke für Ihre Antworten! – jiboulex