Migration von SW5 auf SW6 Problem mit importierten CustomFields

Hallo,

ich bin jetzt bestimmt 2-3h an einem Problem verzweifelt das mit der Migration von CustomFields von Shopware 5.7 auf 6.4 zu tun hatte. Ich weiß nicht ob das in SW6.5 gelöst wurde.

Mein Problem war, dass ich im Frontend die importierten CustomFields (von Plugins und Eigene) nicht mehr anzeigen konnte. Egal welche Methode ich benutzt habe, es wurde immer nur eine „0“ gerendert.

Mit anderen CustomFields der SW6 hat es funktioniert. ABER auch nicht mit Allen!

Beim Import werden den CustomFieldSets und den CustomFields ein PRÄFIX hinzugefügt mit Referenz zum alten SW5 Shop. Dieser Präfix hat aber Dashes beinhaltet „-“. ich vermute um Leerzeichen im alten Shopnamen zu füllen.

Diese Bindestriche / Dashes „-“ verursachen das Problem! Es sind wohl nur Unterstriche „_“ in den CustomFields-Namen erlaubt!

@ Shopware:

  1. Bitte aktualisiert das Migrations-Script und ersetzt die Bindestriche und alle anderen nicht erlaubten Zeichen durch „_“
  2. Bitte baut eine Überprüfung+Fehlermeldung bei der Erstellung von CustomFields ein, damit erst keine fehlerhaften Customfields erstellt werden können.

Diese beiden CustomFields Namen wurden unter den exakt selben Bedingungen im Frontend-Code getestet. Beides sind Textfelder:

Das funktioniert nicht:
Set name: migration_der-shop-sw5_product
Zusatzfeld: customFields.migration_der-shop-sw5_product_attr15

Das hat dann funktioniert („-“ ersetzt durch „_“) :
Set name: migration_der_shop_sw5_product
Zusatzfeld: customFields.migration_der_shop_sw5_product_attr15

Grüße
Manu

Hallo Manu,
auch wenn Dein Post schon eine Weile her ist, sind wir über das gleiche Problem gestolpert.

Nach einiger Recherche konnten wir das Problem wie folgt lösen:
Anstatt das Zusatzfeld wie folgt auszugeben:
{{ page.product.translated.customFields.migration_der-shop-sw5_product }}

Wird das Zusatzfeld über die Twig-Funktion „attribute“ ausgegeben:
{{ attribute(page.product.translated.customFields, ‚migration_der-shop-sw5_product‘) }}

(Quelle: php - twig get object with "-" in name - Stack Overflow)

Ich hoffe ich konnte Dir und anderen, die über das gleiche Problem stolpern, damit helfen.

Grüße
Marco

1 „Gefällt mir“

Hi Marco,

danke für deine Antwort. Auch ein schlauer Workaround, das wusste ich nicht.
Trotzdem wäre es spannend zu wissen, warum dieser Fehler überhaupt zustande kommen kann, und nicht im Core abgefangen wird. Wenn nicht alle Zeichen unterstützt werden, sollte das aus UX-Sicht im Frontend klar kommuniziert, oder am besten ganz verhindert werden.

Grüße
Manu

Gut gelöst, allerdings bekomme ich jetzt migrierte Feld mit den ganzen html-Zeichen angezeigt.
Also eigentlich sollte das so funktionieren:
{{ page.product.translated.customFields.migration_der-shop-sw5_product|raw }}
also mit |raw
wie mache ich das jetzt mit
{{ attribute(page.product.translated.customFields, ‚migration_der-shop-sw5_product‘) }}

???

so:

{{ attribute(page.product.translated.customFields, ‚migration_der-shop-sw5_product‘)|raw }}