Am 21. April erscheint die nächste Ubuntu-Version Jammy Jellyfish mit LTS (Long Time Support), die 5 Jahre lang mit Updates versorgt werden wird. Üblicherweise aktualisiere ich unsere Rechner schon drei, vier Wochen vor dem finalen Release und so habe ich eben auch den Sprung von 21.10 auf 22.04 gewagt. Konkret ging es um fünf Installationen von Kubuntu auf auf unterschiedlichen Notebooks von Dell und Lenovo sowie einem Desktop-Rechner. Im Folgenden wird das ein oder andere Stolpersteinchen beschrieben, wobei es ja auch noch knapp einen Monat Zeit ist, bis das letztendliche Release erscheint.
Shopware 6: Varianten in Produktliste wechseln
Shopware 6 bietet per Standard zwei Möglichkeiten, wie mit Varianten eines Produktes in der Listenansicht umgegangen werden soll: entweder es wird eine bestimmte Hauptvariante angezeigt oder aber die Varianten werden anhand einer Produkteigenschaft aufgefächert. Das heißt, man sieht dann z. B. alle Farben eines T-Shirts einzeln, als wären es eigenständige Produkte.
Für ein Projekt hatten wir nun die Anforderung, dass alle Varianten dargestellt, jedoch in einem gemeinsamen Block kombiniert werden sollen. In der Detailansicht kann man zwischen den Varianten umschalten, wie man es etwa von Amazon kennt. Genau diese Funktionalität bietet das handliche Plugin shopware-variant-switch/ - definitiv einen Tipp wert 😄
Das Buch zu Symfony ist in einer neuen Version erschienen
Bereits im Jahr 2020 haben wir das Buch “Symfony: The Fast Track” hier vorgestellt. Nun ist eine neue Auflage bereitgestellt worden, welche auf den Stand für Symfony 5.4 und 6.0 gebracht wurde.
Eine deutsche Übersetzung steht im Moment noch nicht zur Verfügung, aber das englische Original ist im Zweifelsfall vermutlich ohnehin zu bevorzugen.
Alle Infos im Detail sowie weiterführende Links finden sich in der Ankündigung.
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
anstattEntity/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örigeServiceEntityRepositoryInterface
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 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.
Symfony und API Platform starten offiziellen Docker-Support
Seit knapp einem Monat steht eine umfangreiche Unterstützung zur Docker-basierten Arbeit mit Symfony bereit. Hierbei gibt es Neuerungen in mehreren zentralen Werkzeugen, die ineinander greifen und aufeinander aufbauen:
- Das Composer-Plugin Flex kann bei Bedarf nun neue Services in die Datei
docker-compose.yml
eintragen sowie notwendige PHP Extensions und Bibliotheken imDockerfile
anpassen. - Symfony CLI erkennt, dass Docker Compose für das Projekt verwendet wird, und stellt automatisch entsprechende Umgebungsvariablen bereit.
- Mit dem Beispielcontainer Symfony Docker lassen sich schnell neue Projekte aufsetzen. Es stellt auch ein GitHub Template bereit, mit dem neue Repositories angelegt werden können.
- Das API Platform Projekt stellt ein Helm Chart bereit, um ein Deployment des Projektes in Kubernetes durchzuführen.
In diesen Blog-Artikel werden die Neuerungen im Detail vorgestellt und weiterführende Links angeboten.
Zikula 3 - Cross-Release und weitere Ausrichtung
Heute sind gleichzeitig zwei neue Versionen vom Zikula Core veröffentlicht worden.
Zikula 3.0.4 bringt Fehlerkorrekturen
Mit der Version 3.0.4 wird ein weiteres Bugfix-Update für die Hauptversion 3 bereitgestellt.
Die Änderungen im Detail werden in der Release-Ankündigung aufgelistet.
Zikula 3.1.0 hat etwas mehr an Bord
Außerdem ist auch Zikula Core 3.1.0 erschienen; dieses Update beinhaltet zusätzlich einige Neuerungen, bringt aber auch Veränderungen mit.
Auch hierfür gibt es eine detaillierte Liste mit den Korrekturen, hinzugefügten Features und sonstigen Neuerungen.
Kommende Neuerungen in Symfony 5.4
Vor einigen Tagen wurde Symfony 5.4.0-BETA3 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.1
- Unterstützung für PHP Enumerations (siehe auch diesen Artikel dazu)
- Console
- Console Autocompletion (siehe auch diesen Artikel dazu)
- DependencyInjection
- DI-Verbesserungen
- Filesystem
- Neue Path-Klasse
- Framework
- Veränderungen für Controller
- Konfigurierbare Exceptions
- Language Negotation
- Sonstige Features - Teil 1
- Sonstige Features - Teil 2
- Sonstige Features - Teil 3
- Messenger
- Messenger Verbesserungen
- Notifier
- Notifier Integrationen
- Profiler
- Überarbeitete Profiler Logs
- Profiler Verbesserungen
- Routing
- Route Aliasing
- Security
- Schnellere Security Voter
- Serializer
- Serializer Verbesserungen
- Translator
- Translation Verbesserungen
- Validator
- Verschachtelte Validation Attribute
- Neue Validierungsmöglichkeiten
Shopware 6: Korrektur für Links zu rechtlichen Angaben
In der aktuellen Version von Shopware 6 gibt es einen Bug, der dafür sorgt, dass die Links zu den Datenschutzbestimmungen und den allgemeinen Geschäftsbedingungen im Registrierungsformular nicht funktionieren, sofern die Konfiguration des Systems so eingestellt ist, dass diese aktiv bestätigt werden müssen.
Die zur Korrektur notwendige Änderung ist schnell eingespielt und steht in diesem Diff zur Verfügung.
Vom Teilen und Herrschen: Wie groß sollten Module sein?
Soeben bin ich über einen Artikel auf Heise gestolpert, der aus meiner Sicht ein paar spannende Impulse setzt: Richtig klein: Hat Modularisierung versagt?.
Der Autor beginnt mit klassischen technischen Aspekten wie dem Management von Komplexität und typischen, damit einhergehenden Problemen. Statt aber in der Folge auf die üblichen Ansätze zur Qualitätssicherung einzugehen, versucht der Artikel dann jedoch eine Brücke zu schlagen zu häufig auftretenden organisatorischen Herausforderungen, die mit der Wartung von Software durch wechselnde Teammitglieder und Verantwortlichkeiten einhergehen.