Beim speichern vom Theme - Warning: Undefined array key "type"

Ich möchte ein SelectFeld in der Theme.json definieren.
Das klappt auch und wird mir richtig angezeigt.

Aber beim speichern kommt der Fehler: “Warning: Undefined array key „type““

Hier mein Code:

"wsc-template-header-spalten": {
                "type": "text",
                "label": {
                    "de-DE": "Spalten im Header",
                    "en-GB": "Header template file",
                    "fr-FR": "Fichier de modèle d'en-tête"
                },
                "helpText": {
                    "de-DE": "Einfach",
                    "en-GB": "Name",
                    "fr-FR": "Nom"
                },
                "editable": true,
                "fullWidth": true,
                "order": 200,
                "block": "templateheaderBlock",
                "section": "headerSection",
                "tab": "templatetabs",
                "value": "3",
                "custom": {
                    "componentName": "sw-single-select",
                    "options": [
                        {
                            "value": "2",
                            "label": {
                              "en-GB": "2 Columns",
                              "de-DE": "2 Spalten",
                              "fr-FR": "2 Colonnes"
                            }
                        },
                        {
                            "value": "3",
                            "label": {
                              "en-GB": "3 Columns",
                              "de-DE": "3 Spalten",
                              "fr-FR": "3 Colonnes"
                            }
                        },
                        {
                            "value": "4",
                            "label": {
                              "en-GB": "4 Columns",
                              "de-DE": "4 Spalten",
                              "fr-FR": "4 Colonnes"
                            }
                        },
                        {
                            "value": "5",
                            "label": {
                              "en-GB": "5 Columns",
                              "de-DE": "5 Spalten",
                              "fr-FR": "5 Colonnes"
                            }
                        },
                        {
                            "value": "6",
                            "label": {
                              "en-GB": "6 Columns",
                              "de-DE": "6 Spalten",
                              "fr-FR": "6 Colonnes"
                            }
                        },
                        {
                            "value": "2_3",
                            "label": {
                              "en-GB": "Layout 2/3 + 1/3",
                              "de-DE": "Layout 2/3 + 1/3",
                              "fr-FR": "Mise en page 2/3 + 1/3"
                            }
                        },
                        {
                            "value": "3_2",
                            "label": {
                              "en-GB": "Layout 1/3 + 2/3",
                              "de-DE": "Layout 1/3 + 2/3",
                              "fr-FR": "Mise en page 1/3 + 2/3"
                            }
                        }
                    ]
                }
            },

Wer kann mir sagen was da gerade falsch läuft.

Theme wird kompiliert nur beim speichern kommt der Fehler.

Ich bin kein Programmierer, aber das schreibt ChatGPT: müsste vom Typ Select sein:

Danke für den Screenshot :raising_hands:

Das Problem liegt daran, dass du in deiner theme.json ein Select-Feld definieren willst, aber im Code type: „text“ angegeben hast.

In Shopware muss das Feld für ein Auswahlfeld so aussehen:

„wsc-template-header-spalten“: {

„type“: „select“,

„label“: {

"de-DE": "Spalten im Header",

"en-GB": "Header template columns",

"fr-FR": "Fichier de modèle d’en-tête"

},

„helpText“: {

"de-DE": "Einfach",

"en-GB": "Name",

"fr-FR": "Nom"

},

„editable“: true,

„fullWidth“: true,

„order“: 200,

„block“: „templateheaderBlock“,

„section“: „headerSection“,

„tab“: „templatetabs“,

„value“: „3“,

„custom“: {

"componentName": "sw-single-select",

"options": \[

  { "value": "1", "label": { "de-DE": "1 Spalte", "en-GB": "1 column", "fr-FR": "1 colonne" } },

  { "value": "2", "label": { "de-DE": "2 Spalten", "en-GB": "2 columns", "fr-FR": "2 colonnes" } },

  { "value": "3", "label": { "de-DE": "3 Spalten", "en-GB": "3 columns", "fr-FR": "3 colonnes" } }

\]

}

}

Unterschiede zu deinem Code:

  • type muss select sein (nicht text).

  • Deine Optionsliste (options) braucht value und label – du hast nur die Labels eingetragen.

  • Der Fehler Undefined array key „type“ kommt, weil Shopware bei einem Select-Feld die Optionstypen erwartet.

:backhand_index_pointing_right: Sobald du das anpasst, sollte das Speichern ohne Fehler funktionieren.

Möchtest du, dass ich dir ein vollständiges minimales Beispiel für ein theme.json-Selectfeld erstelle, das garantiert funktioniert?

@raymond-de
danke aber das habe ich alles schon durch und auch selbst probiert.

Ich habe es gerade abgespeckt auf Text und auch die Values rausgenommen.

Aber selbst gerade als “text” bekomme ich den Fehler noch ich suche gerade woher es kommen kann.

Fehler gefunden. Ich habe in der Theme.json einfach ein Feld geändert. Dieses Feld wurde dann nicht mehr in meinen Tabs angezeigt.
Mir ist es dann aufgefallen als ich mal das Theme ändern wollte und im ersten Tab ganz nach unten gescrollt habe. Dort fand ich das alte Feld und als ich dort die verknüpfung wieder geschlossen habe konnte ich es wieder speichern.
Also ein komischer Effekt. Das mit den Labels und Select funktioniert. Wer das mal nutzen möchte bitte daran denken das die Labels mit der 6.8 dann in eine eigene Datei geschrieben werden muss und nicht mehr in die theme.json