Unsere Pimcore 11 Upgrade-Notizen
Von Miro Kodet
Was wir beim Upgrade von Pimcore 10.x auf 11.x gelernt haben
translationKey: "pimcore-upgrade-from-10-to-11" Es gibt eine umfangreiche Upgrade-Anleitung, daher wiederholen wir das hier nicht. Die aktuellste Version (zum Zeitpunkt des Schreibens 11.0.3) wurde Ende Juni 2023 offiziell veröffentlicht, und wir haben unser erstes Upgrade von Pimcore 10.x auf 11.x durchgeführt. Hier sind unsere Notizen dazu.
Fehler: Unable to find file "@PimcoreCoreBundle/config/routing.yml"
Der Teufel steckt im Detail. In deiner app/config/routing.yml musst du folgendes ändern:
pimcore_core:
resource: "@PimcoreCoreBundle/Resources/config/routing.yml"zu:
pimcore_core:
resource: "@PimcoreCoreBundle/config/routing.yaml"Die wichtigste Änderung ist der Wechsel von routing.yml zu routing.yaml. Ich habe eine gute Stunde damit verbracht, das herauszufinden. Und ja, es steht explizit in der offiziellen Upgrade-Anleitung. Ich hoffe, du übersiehst es nicht wie ich.
Das Button-Element existiert in Pimcore 11 nicht mehr
Schade – wir haben es in einem Objekttyp sehr intensiv genutzt. Weitere Informationen dazu unter https://github.com/pimcore/pimcore/issues/15124. Du musst jetzt entweder das Pimcore-Backend erweitern oder eine andere Lösung finden.
Calculated Value muss einen String zurückgeben
Das ist neu. Wenn du in deinem Datenobjekt einen Calculated Value verwendest und diesen auf Basis eines Ausdrucks berechnest, muss das Ergebnis ein String sein. In unserem Fall haben wir eine einfache Berechnung durchgeführt, die eine Zahl zurückgab, wobei der Typ auf input gesetzt war.
Wir haben das mit dem Anhängen von ~ '' am Ende des Ausdrucks gelöst. Das ist wahrscheinlich nicht die eleganteste Lösung, aber die Symfony Expression Language hat keine eingebaute Funktion zur Typumwandlung von Zahl zu String.
Die Signatur der Save-Funktion hat sich geändert
Wenn du die Save-Funktion in deinem Datenobjekt überschreibst, musst du die Signatur anpassen. Die alte war:
public function save()Die neue ist:
public function save(array $parameters = []): staticAuthentifizierung gegen Pimcore Admin
Wir haben das mit einer benutzerdefinierten Firewall in security.yml verwendet, was gut funktioniert hat. Das funktioniert nicht mehr, da diese Option vollständig entfernt wurde.
Wir mussten auf die #[IsGranted('ROLE_PIMCORE_USER')]-Annotation umstellen und die benutzerdefinierte Firewall entfernen.
Statischer Session-Zugriff
Wir haben Session::getReadOnly() in unserem Code verwendet. Das ist nicht mehr möglich.
Wir mussten auf eine andere Methode umstellen (z. B. $request->getSession()->get('key') funktioniert).
Sortierung nach o_id nicht mehr möglich
Verwende stattdessen oo_id (oder eine andere Methode).
Was hat sich sonst noch geändert?
Viel – lies gerne die Release Notes. Nimm dir Zeit dafür und lies sorgfältig; es gibt viele (Breaking) Changes. Aber selbst danach wirst du auf unerwartete Probleme stoßen, da jedes Projekt anders ist. Eine der bedeutendsten Änderungen ist, dass Pimcore nun Symfony 6.2 verwendet. Das ist ein großes Upgrade der Grundlage und bringt viele Änderungen mit sich. Einen allgemeinen Überblick bietet auch dieser Artikel.
Fazit & Lessons Learned
- upgrade in kleinstmöglichen Schritten
- nimm dir Zeit und lies die Release Notes
- folge der Upgrade-Anleitung
- testen, testen, testen (und dann nochmal testen)