Einfaches JS-Management mit ImportMaps in neuer Symfony AssetMapper-Komponente

in  Basics , , , ,

Einfaches JS-Management mit ImportMaps in neuer Symfony AssetMapper-Komponente

Im Symfony-Ökosystem werden Frontend-Komponenten seit einiger Zeit zunehmend über UX-Komponenten verarbeitet. Auch wenn hierdurch einige Anbelange vereinfacht werden, ist doch oftmals der Aufbau einer JavaScript Toolchain mit Node usw. notwendig, um etwa mit Symfony Webpack Encore zu arbeiten.

Durch neue Browser-Funktionen muss das nicht mehr zwingend der Fall sein. Die mit Symfony 6.3 neu eingeführte AssetMapper-Komponente hilft mit sogenannten ImportMaps dabei, die Komplexität noch einmal deutlich zu reduzieren: durch eine JSON-Datei wird auf sehr einfache Weise angegeben, welche Assets der Browser laden soll. Um JS-Dependencies aufzulösen, wird statt npm oder yarn ein Symfony CLI-Kommando ausgeführt.

Flexible Tabellenspalten im EasyAdminBundle

in  Zikula Apps , , ,

Flexible Tabellenspalten im EasyAdminBundle

Vor kurzer Zeit haben wir das EasyAdminBundle (EAB) in die Entwicklungsversion von Zikula 4 integriert um das alte Admin-Interface abzulösen. Seitdem beobachten wir natürlich stets, was sich bei diesem Bundle an neuen Innovationen ergibt.

Eine schöne neue Funktion wurde vor kurzem fertiggestellt und wartet aktuell darauf, eingebunden zu werden: mit einem Column chooser wird es möglich, sich nur ausgewählte Tabellenspalten anzeigen zu lassen und die Spalten darüber hinaus frei zu sortieren.

Zikula 4 und ModuleStudio - Weitere Integration mit dem EasyAdminBundle

in  Zikula Apps , , ,

Zikula 4 und ModuleStudio - Weitere Integration mit dem EasyAdminBundle

Im letzten Beitrag wurde unter anderem dargestellt, dass Zikula 4 nun das EasyAdminBundle (EAB) integriert um das alte Admin-Interface abzulösen. Zwischenzeitlich sind die Arbeiten daran etwas fortgeschritten.

Änderungen im Zikula Core

Zikula bietet in seinem ThemeBundle per Standard ein UserDashboard und ein AdminDashboard, die beide das Site Branding verwenden. Diese können leicht in einem Projekt angepasst und erweitert werden. Darüber hinaus ist es natürlich möglich, weitere Dashboards hinzuzufügen, um spezifische Sichten für weitere Gruppen bereitzustellen.

Symfony UX im Kontext von ModuleStudio

in  Basics , , , , ,

Symfony UX im Kontext von ModuleStudio

Stimulus und Symfony UX

Ein JavaScript-Ökosystem für Symfony wurde bereits Ende 2020 gestartet. Vereinfacht ausgedrückt wurde Symfony Flex erweitert, um auch JavaScript-Anteile in einem Bundle leicht konfigurieren und einrichten zu können. Dazu wird eine Integration mit Stimulus verwendet. Diese Struktur führt zu einer zunehmenden Standardisierung und Aufteilung in wiederverwendbare UX-Komponenten.

Seitdem ist eine Menge passiert: nach Webpack Encore 1.0 und Stimulus Bridge 2.0 kam Symfony UX Turbo, das auf der Basis von Turbo das Schreiben von JavaScript in vielen Fällen überflüssig macht. Anschließend gab es noch einen weiteren Versionssprung, so dass wir aktuell bei Symfony UX 2.0 und Stimulus 3 stehen.

Verbesserungen rund um Doctrine im Bundle-Generator

in  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 und -Repositories.

Was wurde gemacht?

Hier eine Auswahl der bereits umgesetzten Änderungen:

  • Repositories liegen nun im Namespace Repository anstatt Entity/Repository.
  • Sämtliche Referenzen zwischen Entitäten und Repositories verwenden nun keine Namespace-Strings mehr, sondern die Foo::class-Notation.
  • Es werden Interfaces für die Repositories generiert, was insbesondere dann wichtig wird, wenn es darum geht, abweichende Implementierungen für Tests zu verwenden.
  • Die Repositories erben von ServiceEntityRepository, um sie einfach via Dependency Injection verwenden zu können. Falls ein Repository von einer anderen Basisklasse erbt (z. B. im Falle der Tree- und Translatable-Extensions), wird statt dessen das dazugehörige ServiceEntityRepositoryInterface implementiert.
  • Auch für die Entitäten gibt es ein EntityInterface, welches hilfreich ist, wenn es darum geht, schnell herauszufinden, ob man gerade die Entität eines bestimmten Bundles hat oder nicht. Vorher musste hierzu der Namensraum untersucht werden. Im generierten Bundle wird dies beispielsweise in einigen Event-Subscribern/-Listenern genutzt.
  • Sämtliche beschriebenen Punkte werden nicht nur für die Repositories der modellierten Entitäten, sondern auch für etwaige Erweiterungen derselben (LogEntries, Translations, Attributes, Categories, usw.) angewendet.

Was wird noch gemacht?

Die Änderungen in diesem Bereich sind noch nicht abgeschlossen. Unter anderem sind hier noch folgende Dinge angedacht:

Der Bundle-Generator bekommt eine Verschlankungskur

in  Generator , , ,

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 entsprechenden Änderungen auf:

Alte Zöpfe abgeschnitten

Die unterstützten Zikula Core-Versionen wurden auf die Zukunft ausgerichtet: so können die veralteten Versionslinien 1.5.x und 2.x nicht mehr ausgewählt werden. Hierdurch ist natürlich sehr viel alter Code entfernt worden. Die Version 3.0.x ist nun der neue Standard, außerdem wurden neue Optionen für 3.1.x und 4.x angelegt.

ModuleStudio 1.4.0 wurde soeben veröffentlicht

in  Generator , , , ,

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 damit einhergehenden modernisierten Stack: Symfony 5, Twig 3, Doctrine 2, Bootstrap 4 und Font Awesome 5.

Einen kurzen Überblick über die wichtigsten Neuerungen gibt die Release-Ankündigung.

GitHub Actions - Eine Aktion zum Generieren von Zikula-Modulen

in  Builds & Tests , , , , ,

GitHub Actions - Eine Aktion zum Generieren von Zikula-Modulen

Der Standalone-Generator

ModuleStudio bietet einen Standalone-Generator, mit dem sich jederzeit eine Anwendung über die Kommandozeile generieren lässt. Einige allgemeine Informationen hierzu sind der Dokumentation zu entnehmen. Ein simples Beispiel für die Nutzung findet sich ferner in diesem Artikel.

Eine Besonderheit hierbei ist, dass die verwendete jar-Datei bei jedem Build des Generators aktualisiert wird. Es handelt sich also immer um den aktuellen Git-Stand. Damit bietet es sich an, den Standalone-Generator zur kontinuierlichen Integration zu verwenden.

Funktionale Programmierung in Twig: Collections deklarativ verarbeiten

in  Basics , , , , ,

Funktionale Programmierung in Twig: Collections deklarativ verarbeiten

Seit kurzem haben neue Funktionen in die Template-Engine Twig Einzug gehalten. Diese verändern die Art und Weise, wie mit mehrwertigen Daten umgegangen wird, fundamental. Aus diesem Grund soll dieser Artikel beleuchten, wie man mit den neuen Möglichkeiten umgehen kann.

Was heißt deklarativ?

Bei “filter, map und reduce” handelt es sich um ein Muster (Pattern) aus der funktionalen Programmierung. Es erlaubt die Veränderung von Sequenzen (Listen, Arrays, Vektoren, usw.) mittels mehrerer Operationen und Manipulationen, an deren Ende ein Ergebnis steht, welches entweder ausgegeben oder weiter verwendet werden kann. Der Vorteil liegt hier darin, dass diese Veränderungen deklarativ angegeben werden können. Dies führt zu einer sehr prägnanten und lesbaren Syntax.

Vortrag zu Zikula und ModuleStudio bei der Symfony User Group in Köln

in  Verschiedenes , , , , ,

Vortrag zu Zikula und ModuleStudio bei der Symfony User Group in Köln

Schon seit einiger Zeit hatte ich den Wunsch, eine Symfony-Gruppe zu besuchen, um dort einmal kurz zu zeigen, wie wir mit Symfony arbeiten. Gestern hatte es schließlich geklappt. In einem sehr angenehmen und lockeren Ambiente durfte ich mit meinem Talk “Maßgeschneiderte Bundles vom Fließband” zunächst Zikula als ein auf Symfony, Doctrine und Twig aufsetzendes Application Framework vorstellen. Anschließend habe ich dann einen Einblick in die modellgetriebene Entwicklung mit ModuleStudio und die mit der Code-Generierung einhergehenden Besonderheiten gegeben.