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.