CMS Element | Mehrere media uploads -> Wie upload listener und media modal?

Hallo,

ich habe ein Cms Element und bisher nur ein Bild mit Upload benötigt. Habe mich am image Cms Element von SW orientiert und dort alle JS Funktionen kopiert, genauso im Twig Template ein mapping-field, ein media-upload-vs, einen upload-listener und ein media-modal-v2. Alles funktioniert wunderbar.

Nun benötige ich noch ein zweites Bild inkl. Upload Funktion. Brauche ich jetzt einen zweiten upload-listener und ein zweites media-modal-v2? Die Funktionen, die mit diesen components verknüpft sind, beziehen sich ja explizit nur auf ein bestimmtes media Feld in der config.

z.B. im Twig template

<sw-upload-listener
    :upload-tag="uploadTag"
    auto-upload
    @media-upload-finish="onImageUpload"
 />

und dann in der JS Datei:

async onImageUpload({ targetId }) {
    const mediaEntity = await this.mediaRepository.get(targetId);
    this.element.config.media.value = mediaEntity.id;
    this.updateElementData(mediaEntity);
    this.$emit('element-update', this.element);
 }

Ich würde dann ja auch alle anderen Funktionen, zB previewSource, onImageRemove etc. kopieren müssen. Ich habe noch kein Cms-Element gefunden, an dem ich mich diesbezüglich orientieren könnte.

Wie setzt ihr so etwas um?

Lg Alex

Niemand bisher das gleiche Szenario gehabt? Kann doch nicht sein :frowning:

Das war für mich die Lösung. Anfangs hat er das mixin nicht gefunden, wenn ich es in der main.js einbinde. Erst als ich es in der /config/index.js imported habe, hat er es gefunden.

1 „Gefällt mir“

Ich versuche mich hier gerade auf ähnliche Weise an einem Image-Upload, habe die wesentlichen Dinge übernommen vom image Cms Element von SW. Ich bekomme aber das data Attribut nicht befüllt. Das data Attribut bleibt bei mir null. Hat jemand einen Hint wie ich hier weiterkomme?

Das einzige was ich finde ist das hier:
this.initElementData('image');
Und mir ist noch nicht so ganz klar was hier passiert.
Wovon hängt ab ob data gefüllt ist und wie wird es gefüllt?

Ok, durch diesen Thread bin ich einen Schritt weiter: https://forum.shopware.com/t/bild-wird-in-cms-element-in-der-administration-nicht-richtig-angezeigt/71270

Aber brauche ich wirklich einen eigenen DataResolver. Für sowas einfaches wie einen Image-Upload müsste es doch was geben oder? Kann ich das irgendwie analog machen wie das image Cms Element von SW?

Aber wie und wo passiert das?