# Custom CmsElement: Bilder werden nicht richtig ausgelesen

**URL:** <https://forum.shopware.com/t/custom-cmselement-bilder-werden-nicht-richtig-ausgelesen/60944>\
**Category:** Programmierung\
**Created:** [8. August 2019 um 13:24 UTC](https://forum.shopware.com/t/custom-cmselement-bilder-werden-nicht-richtig-ausgelesen/60944 "2019-08-08T13:24:33Z")\
**Posts on this page:** 12\
**Page:** 1

<div class="post-metadata">

**Author:** ![webalm](https://avatars.discourse-cdn.com/v4/letter/w/bc8723/32.png) [@webalm](https://forum.shopware.com/u/webalm)\
**Post date:** [8. August 2019 um 13:24 UTC](https://forum.shopware.com/t/custom-cmselement-bilder-werden-nicht-richtig-ausgelesen/60944/1 "2019-08-08T13:24:33Z")

</div>

Hallo,

ich habe ein neues CmsElement erstellt, welches u.a. ein Bild als Konfiguration verlangt. Abgeschaut habe ich mir den Bilder-Upload aus dem Shopware „image“ CmsElement.

Leider funktioniert das auslesen des Bildes nicht so wie im standard Element. Eigentlich sollte ich im (Frontend) Twig-Template des Elements das vollwertige Media-Objekt unter element.data finden (wie beim Core CmsElement in Bild 1). Die Property element.data ist bei meinem eigenen CmsElement aber null und die Struktur ist komplett anders (Bild 2). Ich habe testweise das Shopware „image“ CmsElement aus dem Core in mein Plugin kopiert und&nbsp;umbenannt (nur die Vue Komponenten). Auch hier funktioniert das Element nicht. In der Datenbank werden alle Konfigurationen richtig in der Tabelle „cms\_slot\_translation“ abgespeichert.

Im Backend ist die Property element.data nach dem Abspeichern der CmsPage ebenfalls null.

Muss hier noch ein Zwischenschritt gemacht werden? Wird bei den Core CmsElement zusätzlich noch Code ausgeführt, welcher bei CmsElementen aus dem Plugin nicht ausgeführt wird?

Bild 1: dump() im „element\_image“ Twig Block

 ![](https://europe1.discourse-cdn.com/flex013/uploads/shopware/original/2X/5/531a1dce1badc49a64f80ba6dbddaddc89beadc6.png)

&nbsp;

Bild 2: dump() im „element\_custom\_image“ Twig Block

 ![](https://europe1.discourse-cdn.com/flex013/uploads/shopware/original/2X/c/cefa773e6cd862e1eba0212a80373e1b97bf957f.png)

Danke und viele Grüße

Jonas

---

<div class="post-metadata">

**Author:** ![Shopware6User](https://avatars.discourse-cdn.com/v4/letter/s/ed8c4c/32.png) [@Shopware6User](https://forum.shopware.com/u/Shopware6User)\
**Post date:** [16. Oktober 2019 um 15:07 UTC](https://forum.shopware.com/t/custom-cmselement-bilder-werden-nicht-richtig-ausgelesen/60944/2 "2019-10-16T15:07:09Z")

</div>

Ich stehe momentan genau am gleichen Ort an. Habe zum Testen das ‘image-slider’ element kopiert und umbenannt. In der Administration klappt dann auch alles wunderbar. Im Frontend wird der CMS Block inklusive element geladen, aber data ist null (d.h. kein Bild). Die anderen Komponenten (z.B. die Navigationspfeile der slideshow) sind aber da.

@webalm‍ Konntest du dein Problem in der Zwischenzeit beheben?

Beste Grüsse&nbsp;

**Edit: Ich habe die Lösung meines Problems nun ausfindig gemacht.**

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

const { Application } = Shopware;

Application.getContainer('service').cmsService.registerCmsBlock({
    name: 'hero-image-slider',
    label: 'Image slider',
    category: 'gp-blocks',
    component: 'sw-cms-block-hero-image-slider',
    previewComponent: 'sw-cms-preview-hero-image-slider',
    defaultConfig: {
        marginBottom: '0px',
        marginTop: '0px',
        marginLeft: '0px',
        marginRight: '0px',
        sizingMode: 'full-width'
    },
    slots: {
        'imageSlider': {
            type: 'image-slider', 
            default: {
                config: {
                    displayMode: {source: 'static', value: 'cover'}
                },
                data: {
                    media: {
                        url: '/administration/static/img/cms/preview_camera_large.jpg'
                    }
                }
            }
        }
    }
});

```

Der ‘type’ muss einen entsprechenden Resolver haben. Ich hatte zuerst einen eigenen type zugewiesen und deshalb hat es mir die Bilder nicht richtig geladen.

---

<div class="post-metadata">

**Author:** ![webalm](https://avatars.discourse-cdn.com/v4/letter/w/bc8723/32.png) [@webalm](https://forum.shopware.com/u/webalm)\
**Post date:** [18. Oktober 2019 um 13:07 UTC](https://forum.shopware.com/t/custom-cmselement-bilder-werden-nicht-richtig-ausgelesen/60944/3 "2019-10-18T13:07:54Z")

</div>

Hallo @Shopware6User‍,

die mediaId des Bildes wird in der elementConfig des CmsSlot abgespeichert.

Das Problem haben wir dann über einen EventSubscriber (cms\_slot.loaded Event) gelöst. Dieser holt dann über die mediaId&nbsp;die MediaEntity aus der Datenbank und schreibt sie ins “data” hinein.

LG

Jonas

---

<div class="post-metadata">

**Author:** ![StefanPoensgen](https://dub1.discourse-cdn.com/flex013/user_avatar/forum.shopware.com/stefanpoensgen/32/14750_2.png) [@StefanPoensgen](https://forum.shopware.com/u/StefanPoensgen)\
**Post date:** [1. November 2019 um 11:20 UTC](https://forum.shopware.com/t/custom-cmselement-bilder-werden-nicht-richtig-ausgelesen/60944/4 "2019-11-01T11:20:26Z")

</div>

Du kannst auch den entsprechenden Resolver extenden und deinen Type angeben. Dann wird das Media Object im Frontend angereichert.

&nbsp;

&nbsp;

---

<div class="post-metadata">

**Author:** ![webalm](https://avatars.discourse-cdn.com/v4/letter/w/bc8723/32.png) [@webalm](https://forum.shopware.com/u/webalm)\
**Post date:** [4. November 2019 um 13:35 UTC](https://forum.shopware.com/t/custom-cmselement-bilder-werden-nicht-richtig-ausgelesen/60944/5 "2019-11-04T13:35:36Z")

</div>

Hallo @StefanPoensgen‍,

vielen Dank für den Hinweis.  
Es gibt zu diesem Thema mittlerweile auch eine Antwort von Shopware:&nbsp;[https://issues.shopware.com/issues/NEXT-4491](https://issues.shopware.com/issues/NEXT-4491)

LG

Jonas

---

<div class="post-metadata">

**Author:** ![sschreier](https://dub1.discourse-cdn.com/flex013/user_avatar/forum.shopware.com/sschreier/32/23296_2.png) [@sschreier](https://forum.shopware.com/u/sschreier)\
**Post date:** [31. Dezember 2019 um 15:25 UTC](https://forum.shopware.com/t/custom-cmselement-bilder-werden-nicht-richtig-ausgelesen/60944/6 "2019-12-31T15:25:54Z")

</div>

Hallo,

könnte einer von euch beiden die Lösung einmal detailierter beschreiben (also mit Ablageort der zusätzlichen Dateien wie dem EventSubscriber und dessen&nbsp;Inhalt, also der&nbsp;beim Laden des CmsSlot die gesamte MediaEntity aus der Datenbank holt und diese&nbsp;somit im Frontend verfügbar macht), also wie ihr von der mediaID, die als einzigstes (im **value** ) übergeben wird, zum media-Objekt / -Entity oder der media-URL gekommen seid (in einem eigenen CMS - Element basierend auf dem Image - CMS - Element von Shopware)? Das wäre sehr nett und würde wahrscheinlich vielen helfen. Es geht nur um die zusätzlichen Dateien / Code für diese Funktionalität.

Eine andere Frage: klappt es bei euch, dass Feld auf “required: false” zu setzen und das dann trotzdem die Erlebniswelt noch gespeichert werden kann? Jedes Mal wenn ich dies setze, kommt ein 404 - Fehler und die Erlebniswelt lässt sich nicht speichern (nicht immer will man die Bildauswahl als Pflichtfeld setzen) - bei “required: true” klappt es dagegen problemlos.&nbsp;

Das Feld media zu nennen wird auch nicht Pflicht sein oder (wenn man beispielsweise auch mehrere Bilder möchte)?

Grüße

Sebastian

---

<div class="post-metadata">

**Author:** ![StefanPoensgen](https://dub1.discourse-cdn.com/flex013/user_avatar/forum.shopware.com/stefanpoensgen/32/14750_2.png) [@StefanPoensgen](https://forum.shopware.com/u/StefanPoensgen)\
**Post date:** [31. Dezember 2019 um 16:22 UTC](https://forum.shopware.com/t/custom-cmselement-bilder-werden-nicht-richtig-ausgelesen/60944/7 "2019-12-31T16:22:39Z")

</div>

[https://github.com/stefanpoensgen/swag-docs-custom-cms-element](https://github.com/stefanpoensgen/swag-docs-custom-cms-element)

[https://github.com/stefanpoensgen/swag-docs-custom-cms-element/commit/625af8eafca1e5a0c78c78952c745b99c6180a07](https://github.com/stefanpoensgen/swag-docs-custom-cms-element/commit/625af8eafca1e5a0c78c78952c745b99c6180a07)

Ich hab das Beispiel aus den Docs mal erweitert

---

<div class="post-metadata">

**Author:** ![sschreier](https://dub1.discourse-cdn.com/flex013/user_avatar/forum.shopware.com/sschreier/32/23296_2.png) [@sschreier](https://forum.shopware.com/u/sschreier)\
**Post date:** [31. Dezember 2019 um 21:59 UTC](https://forum.shopware.com/t/custom-cmselement-bilder-werden-nicht-richtig-ausgelesen/60944/8 "2019-12-31T21:59:34Z")

</div>

Hallo Stefan,

vielen lieben Dank. Hast du zufällig auch eine Lösung bzgl. “required: false”, damit das Bild kein Pflichtfeld ist, die Erlebniswelt aber trotzdem abzuspeichern geht? Müssen da noch irgendwelche Parameter oder so ergänzt werden?

Grüße

Sebastian

---

<div class="post-metadata">

**Author:** ![nitrox](https://avatars.discourse-cdn.com/v4/letter/n/8797f3/32.png) [@nitrox](https://forum.shopware.com/u/nitrox)\
**Post date:** [19. Februar 2020 um 12:50 UTC](https://forum.shopware.com/t/custom-cmselement-bilder-werden-nicht-richtig-ausgelesen/60944/9 "2020-02-19T12:50:51Z")

</div>

Hi Sebastian,

hast du bereits ne Lösung, damit das Bild kein Pflichtfeld ist. Habe das gleiche Problem.

@[StefanPoensgen](https://forum.shopware.com/profile/26527/StefanPoensgen): Danke für dein Example, der Resolver hat mir sehr geholfen.

Grüße  
Roland

---

<div class="post-metadata">

**Author:** ![sschreier](https://dub1.discourse-cdn.com/flex013/user_avatar/forum.shopware.com/sschreier/32/23296_2.png) [@sschreier](https://forum.shopware.com/u/sschreier)\
**Post date:** [19. Februar 2020 um 13:18 UTC](https://forum.shopware.com/t/custom-cmselement-bilder-werden-nicht-richtig-ausgelesen/60944/10 "2020-02-19T13:18:02Z")

</div>

Hallo Roland,

die Problematik ist laut issue - Ticket Shopware 6.3 zugeordnet worden. Es gibt aber einen Workaround, siehe: [https://issues.shopware.com/issues/NEXT-6188 .](https://issues.shopware.com/issues/NEXT-6188)

Grüße

Sebastian

---

<div class="post-metadata">

**Author:** ![nitrox](https://avatars.discourse-cdn.com/v4/letter/n/8797f3/32.png) [@nitrox](https://forum.shopware.com/u/nitrox)\
**Post date:** [19. Februar 2020 um 13:25 UTC](https://forum.shopware.com/t/custom-cmselement-bilder-werden-nicht-richtig-ausgelesen/60944/11 "2020-02-19T13:25:00Z")

</div>

@sschreier‍ Ich habs bei mir hinbekommen, damit das Media/Image Feld kein Pflichtfeld mehr ist. Habe einfach die Zeile “required: true,” weggelassen auf “required: false,” gehts eben auch nicht.

```
media: {
	source: 'static',
	value: null,
	entity: {
		name: 'media'
	}
},

```

&nbsp;

---

<div class="post-metadata">

**Author:** ![sschreier](https://dub1.discourse-cdn.com/flex013/user_avatar/forum.shopware.com/sschreier/32/23296_2.png) [@sschreier](https://forum.shopware.com/u/sschreier)\
**Post date:** [19. Februar 2020 um 13:32 UTC](https://forum.shopware.com/t/custom-cmselement-bilder-werden-nicht-richtig-ausgelesen/60944/12 "2020-02-19T13:32:08Z")

</div>

Hallo,

das steht exakt so auch als Workaround im verlinkten Ticket ![Wink](https://europe1.discourse-cdn.com/flex013/uploads/shopware/original/1X/b3785da0cbf2c8566cb535dcf55b2730b5224899.png "Wink").

Grüße

Sebastian
