Kommende Neuerungen in Symfony 5.3

in  Zikula Apps , ,

Vor zwei Tagen wurde Symfony 5.3.0-BETA4 veröffentlicht. Dies nehme ich zum Anlass, um einmal einen Überblick über die wichtigsten neuen Funktionen zu geben, auf die wir uns im Rahmen dieses Updates freuen können. Im Folgenden sind die bisher veröffentlichten Blog-Beiträge thematisch nach Komponente sortiert. Config Config Builder Klassen Console Negierbare Command-Optionen Verbesserte Debug-Commands Lazy Command Description DependencyInjection Mehrere Environments in einer Datei konfigurieren Service Autoconfiguration und Attribute Service Autowiring mit Attributen Form Tailwind CSS Form Theme Form Handler Helper Sortierung für Formularfelder HttpFoundation Session Service Deprecation Logging Logging-Verbesserungen (Messenger, Deprecations) Notifier Notifier-Integrationen OptionsResolver Prototype Optionen PasswordHasher Neue PasswordHasher Komponente Runtime Neue Runtime Komponente Security Verbesserter Schutz gegen Breach-Angriffe Serializer Inlined Serialization Context Twig Serialize-Filter Translation Translation Providers Uid Uid-Verbesserungen

Kommende Neuerungen in Symfony 5.2

in  Zikula Apps , ,

Vor zwei Tagen wurde Symfony 5.2.0-BETA2 veröffentlicht. Dies nehme ich zum Anlass, um einmal einen Überblick über die wichtigsten neuen Funktionen zu geben, auf die wir uns im Rahmen dieses Updates freuen können. Im Folgenden sind die bisher veröffentlichten Blog-Beiträge thematisch nach Komponente sortiert. PHP 8 PHP 8 Attribute Attribute für Controller-Argumente Attribute für Constraints Cache Asynchrone Cache-Neuberechnung Console 24-bit Farben Unterstützung für Signale in Commands Form Callbacks für Data Mapper Asserts für Form-Tests Form Field Helpers FrameworkBundle Front Controller Konfiguration HttpClient EventSource HTTP client Retryable HTTP client Lock Shared locks Mailer DKIM E-Mail Authentifizierung Profiler Einfachere Daten-Kollektoren Session Profiling RateLimiter Neue Rate Limiter Komponente Security Login Throttling Login Links Semaphore Neue Semaphore Komponente Translator Pseudo-Localization Übersetzbare Objekte Uid Doctrine-Typen für UUID und ULID UID-Serialisierung und -Validierung

Symfony Services asynchron im Hintergrund aufrufen

in  Zikula Apps , , , , ,

Oftmals greift man in Symfony-Projekten auf CLI-Kommandos mit Hilfe der Symfony Console-Komponente zurück, um länger laufende Prozesse außerhalb des Webservers durchzuführen. In komplexeren Vorhaben gibt es weitere Ansätze, wie etwa eine Job Queue oder die noch relativ junge Symfony Messenger-Komponente. Diese haben gemeinsam, dass sie eine bestimmte Struktur voraussetzen. Für die Umstellung von Legacy-Code, in dem selbstgeschriebene Jobs mit ReactPHP Event-Loops zum Einsatz kommen, haben wir vorerst einen anderen Weg gewählt, um diese Worker in Einklang mit Symfony zu bringen.

Zikula 3 bringt zahlreiche Neuerungen rund um Übersetzungen

in  Zikula Apps , , , ,

Nachdem zwischen den Jahren der komplette Unterbau von Zikula 3 auf Stand gebracht worden ist, hat sich der nächste Sprint dem Übersetzungssystem gewidmet. In diesem Beitrag wird kurz dargestellt, welche neuen Funktionen eingebracht worden sind: Es gibt eine verbesserte Unterstützung für Regionen und Sprachvarianten (z. B. de_DE und de_CH neben de). Die automatische Erkennung zusätzlich vorhandener Sprachpakete wurde verbessert. Die Konfiguration für die Übersetzung von Modulen und Themes wird automatisch auf Stand gehalten.

Zikula startet modernisiert ins neue Jahr

in  Zikula Apps , , , , ,

Im Rahmen des letzten Sprints wurde der Unterbau von Zikula 3 auf den neuesten technischen Stand gebracht. Im Folgenden wird kurz zusammengefasst, was hierbei genau passiert ist. Twig 3 Als erstes sollte die Template-Engine Twig auf die Version 3 gebracht werden. Dies versprach anfangs eine sehr übersichtliche Sache zu werden. Allerdings gab es dann doch noch einige weitere Aspekte zu beachten: Da die templating-Komponente in Symfony 5 entfernt wird, müssen Pfade zu Templates nun der Namespace-Notation folgen.

Der Generator spricht Twig

in  Generator , , , , ,

Zwischen den Jahren konnte ich etwas Zeit erübrigen und in den ModuleStudio Generator investieren, um eine größere Umstellung durchzuführen: bei Anwendungen für Zikula 1.4.x wird nun Twig an Stelle von Smarty verwendet. Anwendungen für 1.3.x verwenden weiter Smarty wie bisher. Im Wesentlichen lief die Umstellung ziemlich geradlinig, da die meisten Konzepte aus Smarty analog auch mit Twig implementiert werden können. Eine Besonderheit betrifft die Behandlung von Assets, also CSS-, JS- und Bilddateien: statt direkt die Asset-Komponente von Symfony zu verwenden, wird in Zikula eine darauf aufbauende zasset-Funktion eingesetzt, welche einige Besonderheiten des Zikula-Frameworks beachtet.

Multisites auf Basis von ModuleStudio

in  Zikula Apps , , , ,

Mit dem Multisites-Modul lassen sich beliebig viele Seiten mit einem einzigen Zikula-System betreiben. Mit Vorlagen, die im Prinzip SQL-Dumps repräsentieren, können neue Seiten auf Knopfdruck erstellt werden. Jede Seitenvorlage beinhaltet damit die vorab definierten Strukturen und -daten out of the box. Jede Internetseite verfügt (aus Gründen der Architektur und der Skalierbarkeit) über eine eigene Datenbank. Es ist auch möglich, dass mehrere Internetseiten mit der gleichen Datenbank arbeiten. Dies erfordert jedoch entsprechende Anpassungen in den verwendeten Themes.

Controller-Funktionen in Templates einbinden

in  Zikula Apps , , ,

Im Gegensatz zu älteren Versionen empfangen Controller-Aktionen ab Zikula 1.3.x keine Argumente mehr. Bei der Umstellung bestehender Module kann man darüber stolpern, zum Beispiel wenn Controller-Funktionen mit dem modfunc-Plugin in Smarty-Templates eingebettet wurden. Worum geht es? Früher wurde in Zikula nicht unterschieden zwischen Controller-Aktionen und API-Methoden. Beides konnte beliebig aufgerufen und integriert werden, sowohl in PHP als auch in Smarty-Templates. Seitdem Symfony unter der Haube die Behandlung von Requests steuert, erfolgt hier eine striktere Trennung: während API-Methoden immer noch mit Argumenten aufgerufen werden, werden bei Controller-Aufrufen ausschließlich die Request-Parameter injiziert.