Fehler beim speichern einens custom Blocks in der Administration

Hallo zusammen.

Ich habe einen Custom Block in meinem Theme Plugin erstellt. Die Ausgabe der Preview und des Components funktioniert im Admin aber wenn ich versuche meine Erlebniswelt zu speichern, passiert nichts und dieser Fehler tritt in der der Konsole auf:

vendors-node.js?15940248011367633:2 TypeError: Cannot convert undefined or null to object
    at Function.values ()
    at s.checkRequiredSlotConfigField (app.js?15940248014372417:1)
    at app.js?15940248014372417:1
    at Array.forEach ()
    at app.js?15940248014372417:1
    at Array.forEach ()
    at app.js?15940248014372417:1
    at Array.forEach ()
    at s.onSave (app.js?15940248014372417:1)
    at Xe (vendors-node.js?15940248011367633:2)

Der Inhalt meiner index.js sieht so aus:

import './component';
import './preview';

const {Application} = Shopware;

Shopware.Service('cmsService').registerCmsBlock({
    name: 'category-view',
    label: 'sw-cms.blocks.commerce.categoryView.label',
    category: 'commerce',
    component: 'sw-cms-block-category-view',
    previewComponent: 'sw-cms-preview-category-view',
    defaultConfig: {
        marginBottom: '20px',
        marginTop: '20px',
        marginLeft: '20px',
        marginRight: '20px',
        sizingMode: 'boxed'
    },
    slots: {
        content: 'category-view'
    }
});

Danke für eure Hilfe!

Nur ne Vermutung, aber hast du den slot content auch im component Template definiert? Daran lag es nämlich bei mir.

Hatte das selbe Problem. Du musst wenn du die slots angibst die default data und config angeben.

slots: {
        //Name
        "content": {
            type:"category-view",
            default:{
                config:{
                    //Deine Default Config
                },
                data:{
                    //Deine Default Data
                }
            }
        }
    }

Edit: Lag doch nicht daran du benutzt warscheinlich ein custom element wenn du dieses regestrierst MUSST du eine defaultConfig angeben also:

import './preview';
import "./component"

Shopware.Service('cmsService').registerCmsElement({
    name: 'elementName',
    label: 'sw-cms.elements.elementName.label',
    component: 'sw-cms-el-elementName-list',
    previewComponent: 'sw-cms-el-preview-elementName-list',
    
    //der wichtige teil den ich vergessen habe...
    defaultConfig: {
    }
});

 

Mein Kollege hatten den Fehler auch. Lag daran, dass wir in der defaultConfig ein Attribut hatten, was wir dann später gelöscht haben. Die Seite hat allerdings dann immer noch das alte Attribut erwartet bzw. irgend einen Unfug mit dem Inhalt getrieben.

Lösung: Erlebniswelt löschen → Neue anlegen :wink: