Ich würde gerne ein CMS mit Folgender Struktur bauen:
- id1
- Name
- Elemente
— id1
— Name
— Bildmotiv
— id2
— Name2
— Bildmotiv2
Soweit so gut, da konnte ich von einem Accordeon Element die Struktur ableiten. Folgende wahrscheinlich relevante Struktur findet sich in Kurzform:
<div v-for="(entry, index) in element.config.entries.value" :key="index" :ref="'collapse_' + index">
<sw-cms-mapping-field
v-model="entry.media"
value-types="entity"
entity="media"
>
<sw-upload-listener
:uploadTag="uploadTag"
@media-upload-finish="onImageUpload($event, entry.id)" >
</sw-upload-listener>
<sw-media-upload-v2
variant="regular"
:uploadTag="uploadTag"
:source=""
:allowMultiSelect="false"
:defaultFolder="cmsPageState.pageEntityName"
:caption="$tc(snippetPrefix + 'label.image')"
@media-upload-sidebar-open="onOpenMediaModal"
@media-upload-remove-image="onImageRemove"
></sw-media-upload-v2>
</sw-cms-mapping-field>
<!-- Media Modal for image selection -->
<sw-media-modal-v2
v-if="mediaModalIsOpen"
variant="full"
:caption="$tc(snippetPrefix + 'label.image')"
:entity-context="cmsPageState.entityName"
@media-upload-remove-image="onImageRemove"
@media-modal-selection-change="onSelectionChanges($event, entry.id)"
@modal-close="onCloseMediaModal"
/>
Wie ihr seht habe ich versucht:
onSelectionChanges > die $entry.id mitzugeben und in der index.js dann entgegenzunehmen.
onSelectionChanges(mediaItems, entryid) {
const media = mediaItems[0];
let modifiedentry = this.element.config.entries.value.find(item => item.id = entryid);
modifiedentry.media.value = media.id;
this.$set(modifiedentry, 'media', media);
},
Was nun aber passiert ist, dass auch wenn ich bei id2 das Bild ändere, bei onSelectionChanges wird bereits die falsche ID reingegeben (die id1) und dann wird immer id1 mit dem neuen Bildmotiv aktualisiert.
Ich finde leider kein Shopware Element in dem es ein Array gibt und darin dann ein Bildmotiv.
Ich bin mir sicher das geht total Elegant, sowas wie
this.element.config.entries.value.find(item => item.id = initiator.parent)
Habt Ihr Hinweise für mich? Gibt es vielleicht etwas wo ich mich entlanghangeln könnte im Core?