So erstellen Sie ein benutzerdefiniertes Ereignis in Symfony2

Lesezeit: 2 Minuten

Benutzer-Avatar
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.

Benutzer-Avatar
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

Benutzer-Avatar
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

1257140cookie-checkSo erstellen Sie ein benutzerdefiniertes Ereignis in Symfony2

This website is using cookies to improve the user-friendliness. You agree by using the website further.

Privacy policy