Erweitert

Ereignisse abhören

Ereignisse abhören

Um Ereignisse des Kernsystems oder eines anderen Moduls abzuhören, musst Du zuerst einen EventServiceProvider erstellen, der in Deiner module.json-Datei registriert werden muss.

Im Folgenden siehst Du einen einfachen Event-Listener, der auf die Änderung von Konfigurationselementen reagiert. Diese Datei befindet sich in Deinem Modulordner unter Listeners/ConfigChangedListener.php.

<?php

namespace custom\modules\HwMollie\Listeners;

use App\Events\ConfigElementsChangedEvent;

class ConfigChangedListener {

    /**
     * Handle the event.
     *
     * @param ConfigElementsChangedEvent $event
     * @return void
     */
    public function handle(ConfigElementsChangedEvent $event) {
        dump("config changed event");
        dd($event->payload);
    }
}

Allerdings muss dieser Listener konfiguriert werden, bevor er aktiv wird. Daher musst Du für Dein Modul eine Event-Service-Provider-Klasse erstellen, in der Du Ereignisse den Listenern zuordnest. In diesem Fall heißt die Datei HwMollieEventServiceProvider.php und befindet sich im Ordner /Providers Deines Moduls:

<?php

namespace custom\modules\HwMollie\Providers;

use App\Events\ConfigElementsChangedEvent;
use custom\modules\HwMollie\Listeners\ConfigChangedListener;
use Illuminate\Foundation\Support\Providers\EventServiceProvider;

class HwMollieEventServiceProvider extends EventServiceProvider
{
    protected $listen = [
        ConfigElementsChangedEvent::class => [
            ConfigChangedListener::class
        ]
    ];
}

Wie Du sehen kannst, enthält die Klasse nur ein $listen-Array, in dem die Zuordnung erfolgt. Ein Ereignis kann mehrere Listener haben. In diesem Fall wurde das ConfigElementsChangedEvent-Ereignis dem zuvor erstellten Listener ConfigChangedListener zugeordnet.

Schließlich musst Du den Event-Service-Provider in Deiner module.json-Datei registrieren. Dazu kannst Du die Zeile des Basis-Service-Providers kopieren:

...
"providers": [
    "custom\\modules\\HwMollie\\Providers\\HwMollieServiceProvider",
    "custom\\modules\\HwMollie\\Providers\\HwMollieEventServiceProvider" // our event service provider
],
...

Das war's! Du hast jetzt einen eindeutigen Event-Listener erstellt, um Ereignisse in h0stware abzuhören.

War das hilfreich?