# Administration API: Thumbnails erzeugen / WriteProtected

**URL:** <https://forum.shopware.com/t/administration-api-thumbnails-erzeugen-writeprotected/88196>\
**Category:** Programmierung\
**Created:** [8. Juni 2021 um 13:42 UTC](https://forum.shopware.com/t/administration-api-thumbnails-erzeugen-writeprotected/88196 "2021-06-08T13:42:35Z")\
**Posts on this page:** 2\
**Page:** 1

<div class="post-metadata">

**Author:** ![Sio](https://dub1.discourse-cdn.com/flex013/user_avatar/forum.shopware.com/sio/32/13095_2.png) [@Sio](https://forum.shopware.com/u/Sio)\
**Post date:** [8. Juni 2021 um 13:42 UTC](https://forum.shopware.com/t/administration-api-thumbnails-erzeugen-writeprotected/88196/1 "2021-06-08T13:42:35Z")

</div>

Hallo zusammen,

ich habe mir ein Administration Modul entwickelt, mit dem ich Produkten Bilder von Pixxio zuweisen kann, ohne sie herunter zu laden. Jetzt möchte ich Thumbnails dafür generieren lassen.

Leider sind die Felder width&height bei media\_thumbnail WriteProtected und das Feld media:thumbnailsRo ist nicht ApiAware - kann soweit ich weis also nicht durch die API beschrieben werden?

Kann mir hier evt. jemand sagen, ob ich das umgehen kann? Ich habe mir gedacht ich „überschreibe“ temporär die Einstellung:

```auto

// remove write protection
Shopware.EntityDefinition.get('media_thumbnail').forEachField((field, fieldName) => {
    if(fieldName === 'width' || fieldName === 'height') {
        field.flags.write_protected = null;
        delete field.flags.write_protected;
    }
})

// get sizes and save thumbnails
this.getThumbnailSizes().then((sizes) => {
    let aSizes = []
    sizes.forEach((size) => {
        let MediaThumbnail = this.mediaThumbnailRepository.create()

        MediaThumbnail.mediaId = media.id
        MediaThumbnail.pixxio = true
        MediaThumbnail.width = size.width
        MediaThumbnail.height = size.height

        this.mediaThumbnailRepository.save(MediaThumbnail, Context.api)
        // Produce error 500 because of write protection
    })
});

```

In PHP müsste ich die Daten dann abfangen und selbst irgendwie über ein Event speichern, oder die EntityDefinition überschreiben.

```auto
public function onControllerArguments(ControllerArgumentsEvent $event): void
{
    $request = $event->getRequest();
    $controller = $event->getController()[0];

    if ($this->matcher instanceof RequestMatcherInterface) {
        $parameters = $this->matcher->matchRequest($request);
    } else {
        $parameters = $this->matcher->match($request->getPathInfo());
    }

    if($controller instanceof ApiController && $parameters['entityName'] === 'media-thumbnail') {
        // SAVE TUMBNAILS OR ORVERRIDE MediaThumbnailDefinition
    }
}

```

Klingt das für euch gut, oder gibt es da einen besseren Weg?

Danke & LG  
Sio

---

<div class="post-metadata">

**Author:** ![Sio](https://dub1.discourse-cdn.com/flex013/user_avatar/forum.shopware.com/sio/32/13095_2.png) [@Sio](https://forum.shopware.com/u/Sio)\
**Post date:** [9. Juni 2021 um 06:50 UTC](https://forum.shopware.com/t/administration-api-thumbnails-erzeugen-writeprotected/88196/2 "2021-06-09T06:50:49Z")

</div>

Ich habe noch mal drüber geschlafen, für das Problem generiere ich keine Thumbnails. Es sollte reichen, wenn ich die Thumbnail-Sizes einfach an Pixxio übergebe und die Links dem Srcset übergebe.

Allerdings wäre es noch super, falls mir jemand das System hinter WriteProtected und ApiAware erklären könnte, bzw. warum ich diese Felder nicht per API anlegen kann.

Bei Media bspw. kann ich deswegen leider auch viele Felder nicht befüllen. Hat hier evt. schon jemand „etwas“ mit dem Bilder in die Tabelle `media` gespeichert werden können?

```auto
const pixxioMedia = this.mediaRepository.create(Context.api, media.id)
pixxioMedia.mimeType = response.data.fileType
pixxioMedia.fileExtension = 'jpg'
pixxioMedia.fileSize = response.data.fileSize
pixxioMedia.fileName = response.data.originalFilename
pixxioMedia.title = response.data.originalFilename

this.mediaRepository.save(pixxioMedia, Context.api).then(() => {
    // do cool stuff …
})

```

Danke & LG  
Sio
