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.
Mit Symfony 6.3 sind wieder allerhand neue Features hinzugekommen. In diesem Beitrag möchte ich kurz die neue Komponente Scheduler vorstellen, mit welcher der Symfony Messenger um zeitgesteuerte Nachrichten erweitert werden kann. Der Scheduler erlaubt es nämlich, basierend auf einem vordefinierten Zeitplan bestimmte Messages regelmäßig zu triggern.
Mit einem Schedule Provider wird ein Zeitplan definiert. Dieser Zeitplan beinhaltet ein oder mehrere Definitionen einer RecurringMessage, wobei jede Definition einen Intervall sowie das dazugehörige Message-Objekt spezifiziert.
Mit der Java-basierten Software Keycloak wird die Verwaltung und Authentifizierung von Nutzern zentral gelöst. Hierbei bleiben kaum Wünsche offen: egal ob nun ein Registrierungsprozess, die Integration mit Social Logins (Google, Facebook, usw.) oder LDAP gewünscht ist, mit Keycloak lassen sich diese Themen sehr flexibel umsetzen. Auch erweiterte Features, wie etwa eine 2-Faktor-Authentifizierung, sind möglich.
Um Keycloak mit Symfony zu integrieren, ohne sich mit der Security-Komponente von Symfony im Detail auseinandersetzen zu müssen, bietet sich dieses Bundle an.
Bereits seit einigen Jahren gibt es das BazingaJsTranslationBundle, welches es erlaubt, den Symfony Translator auch Client-seitig zu verwenden. Auch in Zikula kommt dieses Bundle zum Einsatz, allerdings gab es auch immer mal wieder kleinere Defiziten zu bewältigen.
Nun gibt es einen offiziellen Nachfolger oder Ersatz: der aktuell noch als experimentell gekennzeichnete UX Translator bringt einige Verbesserungen mit, welche die Nutzung vereinfachen. So wird zum Beispiel auch die Intl ICU Syntax unterstützt.

Die Veröffentlichung der nächsten Symfony-Version 6.3 ist für Ende Mai 2023 geplant. Wie immer gibt es regelmäßige Einblicke in die wichtigsten, zu erwartenden Features und Verbesserungen. Dieser Beitrag zeigt im Folgenden die bisher veröffentlichten Blog-Beiträge thematisch nach Komponente sortiert.
Allgemein Early Hints Enum Verbesserungen Performance Optimierungen Emoji Verbesserungen DX Verbesserungen Teil 1 DX Verbesserungen Teil 2 DX Verbesserungen Teil 3 AssetMapper Neue AssetMapper-Komponente (siehe auch diesen Beitrag) Clock Clock Verbesserungen DependencyInjection DI Verbesserungen Form Kleinere Verbesserungen HttpClient HttpClient Verbesserungen HttpFoundation Request Payload HttpKernel HTTP Exception Attribute Request-Daten zu typisierten Objekten mappen Targeted Value Resolver Mapper für Query-Parameter Notifier Notifier-Integrationen RemoteEvent Neue RemoteEvent-Komponente (siehe auch diesen Beitrag) Scheduler Neue Scheduler-Komponente (siehe auch diesen Beitrag) Security OpenID Connect Token Handler Login und Logout Verbesserungen Serializer Serializer Debug Command Validator NoSuspiciousCharacters-Constraint PasswordStrength-Constraint Webhook Neue Webhook-Komponente (siehe auch diesen Beitrag) Webhook-Integration mit Mailer und Notifier WebProfiler WebProfiler Verbesserungen
Wer sich mit dem Thema PWA (Progressive Web App) beschäftigt, steht vor einer gewachsenen Auswahl unterschiedlicher APIs, welche Zugriff auf unterschiedliche Gerätefunktionen erlauben. So ist es beispielsweise mit Hilfe der Contact Picker API möglich, Kontakte eines Gerätes in einer Web App zu verwenden.
Innerhalb der Shape Detection API werden unterschiedliche Detektoren gebündelt, um etwa eine Gesichtserkennung durchzuführen (FaceDetector) oder via OCR Text aus einem Bild zu extrahieren (TextDetector). Interessant ist hierbei auch der BarcodeDetector, welcher das Auslesen unterschiedlicher Barcode-Formate ermöglicht.
Aktuell noch als experimentell gekennzeichnet, macht es sich die neue Komponente zur Aufgabe das Senden und Konsumieren von Webhooks zu vereinfachen.
Auf den ersten Blick werden hier zwei weitere Bausteine miteinander verbunden: der Symfony Messenger wird mit einem RemoteEvent kombiniert. Letzteres stammt aus einer gleichnamigen, ebenfalls eine neu eingeführten Symfony-Komponente. Weitere Details, etwa zur Abstraktion der Requests, sind in den Slides ersichtlich.
Ressourcen Slides Keynote SymfonyCon 2022 GitHub Repository der Webhook-Komponente GitHub Repository der RemoteEvent-Komponente Pull Request mit Entwurf der Dokumentation
Gestern sind die GitHub Markdown Helpers in einer Beta-Version veröffentlicht worden. GitHub führt damit kleine Tools ein, mit denen unterschiedliche Elemente interaktiv eingebunden werden können.
Diese sogenannten Slash Commands werden mit / ausgelöst. Im ersten Schwung gibt es unter anderem die Möglichkeit, ein Issue Template aus dem jeweiligen Repository einzufügen, eine Taskliste zu starten oder einen Code-Block für eine bestimmte Sprache zu erstellen. Gegebenenfalls werden weitere Fragen gestellt, so ist bei einer Tabelle die Anzahl der gewünschten Spalten auszuwählen.
Am ersten Februar, also vor genau einem Monat, wurden mit Symfony 6.2.6 zwei Sicherheitsprobleme adressiert. Ein Patch im SecurityBundle hatte allerdings auch valide Use Cases gebrochen, wie zum Beispiel bestimmte Testszenarien oder Token-basierte Authentifizierung.
Nun ist Symfony 6.2.7 verfügbar, worin das Problem und mehrere weitere Bugs behoben worden sind.
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.