Symfony Forms in Zikula und ModuleStudio

in  Generator , , ,

Symfony Forms in Zikula und ModuleStudio

Im Januar wurde der Generator auf Symfony Forms umgestellt. Mir war schon vorher klar, dass diese Komponente eine der mächtigsten Teile von Symfony darstellt. Wie nützlich sie aber in der Praxis ist, sieht man natürlich erst, wenn man sie tatsächlich nutzt.

Auch der Zikula Core reimplementiert zunehmend Formulare mit Symfony Forms. Kürzlich wurde das Blocksystem komplett darauf umgestellt. In diesem Zuge wurden ein Block Handler Interface sowie ein dazu passender Abstract Block Handler eingeführt, mit denen Blöcke nun einfacher aufgebaut werden und einen Form Type zur Bearbeitung verwenden können.

Durch die Kapselung des Aufbaus von Formularen in Form Types werden diese sehr leicht wiederverwendbar. So kann man etwa komplette Formulare genauso wie ein einzelnes Feld in anderen Formularen verwenden. Da die Behandlung von Formularen zur Bearbeitung von Entitäten mit Relationen und diversen Extensions (wie Kategorien, Attribute, etc.) dennoch ziemlich komplex werden kann, habe ich im Generator die aus dem alten in Zikula verwendeten Form-System bekannten Form Handler Klassen für diesen Anwendungsfall beibehalten und umstrukturiert, so dass die Controller entlastet werden.

Symfony bietet bereits eine ganze Reihe vordefinierter Feldtypen, so dass der Aufbau eines Formulars sehr schnell von der Hand geht. Auch eigene Typen lassen sich wiederum als Form Type realisieren. So definiert der Generator beispielsweise spezielle Eingabefelder für Farben, Benutzer, Bäume oder Koordinaten.

Sehr interessant ist aber insbesondere die Erweiterung bestehender Feldtypen. Hiermit lassen sich bereits existierende Felder um zusätzliche Funktionen anreichern. Im Generator nutze ich das beispielsweise, um weitere Informationen bei Upload-Feldern anzuzeigen oder um Datums- und Zeitfeldern einen Picker zu spendieren.

Die nächste wichtige Funktion betrifft die Data Transformers. Hiermit lassen sich Daten aus Formularen verändern, wenn sie in einem anderen Format gespeichert (Model Transformer) oder angezeigt (View Transformer) werden sollen. Dies wird im Generator mit mehrwertigen Listen und Relationen mit AutoCompletion umgesetzt.

Noch nicht genutzt habe ich bislang die Möglichkeit, ein Formular mit Form-Events dynamisch zu verändern. Man kann mit dieser Funktionalität zwar sehr viel tun, dies betrifft jedoch weniger den Generator an sich als vielmehr die anforderungsspezifische Anpassung in den generierten Anwendungen.

Weitere Beiträge in Kategorie Generator

Verbesserungen rund um Doctrine im Bundle-Generator
- Es geht weiter mit den Aufräumarbeiten im Generator von ModuleStudio: nach den im letzten Beitrag beschriebenen Anpassungen rund um PHP 8 liegt aktuell der Fokus auf den Umgang mit Doctrine-Entitäten …
Der Bundle-Generator bekommt eine Verschlankungskur
- In den letzten Tagen sind die ersten Arbeitsschritte zur weiteren Modernisierung der von ModuleStudio generierten Symfony-Bundles bzw. Zikula-Module umgesetzt worden. Dieser Beitrag zeigt kurz die …
ModuleStudio 1.4.0 wurde soeben veröffentlicht
- Eine neue Version von ModuleStudio steht zum Download auf der Projektseite bereit. ModuleStudio 1.4.0 bringt komplette Unterstützung von Anwendungen für das gestern veröffentlichte Zikula 3 und dem …
Funktionen im Generator zur Versionierung von Daten
- ModuleStudio erlaubt die Nutzung unterschiedlicher Doctrine-Erweiterungen, indem diese im jeweiligen Anwendungsmodell aktiviert und ggf. konfiguriert werden. Neben Baumstrukturen (tree / nested set), …
Neue Generator-Verbesserung zur Darstellung von Geodaten
- Bereits seit einigen Jahren ist es möglich, Entitäten in ModuleStudio als geografisch zu kennzeichnen. Dies führt dazu, dass den entsprechenden Objekten Felder zur Speicherung von Koordinaten …