Ich möchte benutzerdefinierte Ereignisse mit dem Namen erstellen user_logged
damit ich meine Zuhörer an diese Ereignisse binden kann.
Ich möchte einige Funktionen ausführen, wenn sich der Benutzer angemeldet hat.
Fata Morgana
Ich möchte benutzerdefinierte Ereignisse mit dem Namen erstellen user_logged
damit ich meine Zuhörer an diese Ereignisse binden kann.
Ich möchte einige Funktionen ausführen, wenn sich der Benutzer angemeldet hat.
Lusitanisch
Erstellen Sie eine Klasse, die erweitert wird Symfony\Component\EventDispatcher\Event
.
Verwenden Sie dann den Event-Dispatcher-Dienst, um das Ereignis zu versenden:
$eventDispatcher = $container->get('event_dispatcher');
$eventDispatcher->dispatch('custom.event.identifier', $event);
Sie können Ihren Ereignis-Listener-Dienst wie folgt registrieren:
tags:
- { name: kernel.event_listener, event: custom.event.identifier, method: onCustomEvent }
Gute Antwort. Außerdem gibt es hier weitere Details: symfony.com/doc/current/components/event_dispatcher/…
– gucken
26. Juli 2012 um 1:44 Uhr
In der Tat, aber dies ist ein einfacher Weg, um loszulegen.
– Lusitanisch
26. Juli 2012 um 1:45 Uhr
ausgezeichnete Antwort !!, jetzt ist die einzige Frage, wo ist der beste Ort, um ein benutzerdefiniertes Ereignis zu versenden? Vielleicht ein Service?
– Nico
7. August 2013 um 19:05 Uhr
Ereignisse werden normalerweise in Controllern versandt, können aber bei Bedarf auch in Diensten versandt werden.
– tomazahlin
8. Mai 2014 um 0:07 Uhr
Verwendung der event_dispatcher
Service hat bei mir funktioniert! ich benutzte $dispatcher = new EventDispatcher;
aber das hat mein Ereignis aus irgendeinem Grund nicht ausgelöst.
– Trugbild
25. Juni 2014 um 8:42 Uhr
cn007b
Diese Antwort ist etwas erweiterte Antwort.
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;
}
}
wo Sie wollen, zum Beispiel im Homepage-Controller
use AppBundle\Event\HomePageEvent;
// ...
$eventDispatcher = $this->get('event_dispatcher');
$event = new HomePageEvent();
$event->setCode(200);
$eventDispatcher->dispatch('custom.event.home_page_event', $event);
Groß! sehr hilfreich!
– iamjc015
14. September 2016 um 9:42 Uhr
In meinem Fall wird der Fehler Service event_dispatcher nicht gefunden, warum dieser Fehler auftritt. Können Sie mir bitte so schnell wie möglich helfen, danke im Voraus
– Pardeep Dhiman
3. Mai 2019 um 11:47 Uhr