Allgemeine und eigene Symfony-Events in generierten Zikula-Modulen

in  Zikula Apps , , , ,

Allgemeine und eigene Symfony-Events in generierten Zikula-Modulen

In ModuleStudio 0.6.2 liegt der Fokus auf die Anpassung des Generators auf Symfony und Bootstrap, was die Zielversion Zikula 1.4.0 anbelangt.

Einige Neuerungen betreffen das Zusammenspiel mehrerer Module, die miteinander interagieren. Erstens werden nun Factory-Klassen für Entitäten und Repositories in Verbindung mit Service-Parametern eingesetzt, mit denen man die Entität eines Moduls X von einem Modul Y heraus erweitern und anpassen kann. Zweitens werden in den Doctrine Lifecycle-Events der Entitäten eigene Symfony-Events verwendet, mit denen sich ein anderes Modul einhaken kann.

Moduleigene Events

Hat man beispielsweise eine Entität person im Modul People, so werden die Definitionen der korrespondierenden Events in die Datei Event/FilterPersonEvent.php generiert. Hier gibt es dann für die unterschiedlichen Events Konstanten wie etwa PERSON_PRE_REMOVE, PERSON_POST_UPDATE und so weiter.

Ein anderes Modul kann via Event Listener oder Event Subscriber auf diese Events reagieren und so eigene Aktionen an den Ereignissen im People-Modul ausrichten. Mehr dazu in der offiziellen Symfony-Dokumentation.

Allgemeine Events

Generierte Module bringen auch mehrere Event Subscriber für allgemeine Events von Symfony und Zikula mit, die als Beispiel zur Eingewöhnung verwendet werden können. Es lohnt sich auf jeden Fall, sich als Modulentwickler mit dem Event-System auseinander zu setzen, da es eine große Menge möglicher Anwendungen bietet. Hier ein paar Beispiele:

  • In die Registrierung oder das Login von Nutzern einhaken.
  • Andere Controller oder API-Funktionen abfangen und erweitern.
  • Ein zentrales Logging installieren.
  • Einen zentralen Wartungsmodus einbauen.
  • Auf das Löschen von Benutzerkonten reagieren.
  • Veränderungen von anderen Modulen (Installieren, Aktualisieren, Aktivieren, Deaktivieren, Deinstallieren, Hinzufügen neuer Hook-Areas, usw.) mitbekommen.
  • Auf Veränderungen von Benutzergruppen (Anlegen, Löschen, Hinzufügen und Entfernen von Benutzern) reagieren.
  • Templates vor der Auslieferung abfangen und verändern.

Events anderer Module

Auch andere Module nutzen bereits seit Längerem eigene Events, für die in ModuleStudio-basierten Modulen ebenfalls Event Subscriber erzeugt werden. Hierzu zählen Content (zur Registrierung eigener Content Types) und Scribite (zur Registrierung von Editor-Plugins). Ein weiterer Event Subscriber bedient ein Event für wartende Inhalte, die auf eine Freigabe warten: dies betrifft Modelle, in denen für mindestens eine Entität ein entsprechender Workflow eingestellt wird.