Freitextfeld im Media-Manager nutzen

Hey zusammen,

Ich fummel für einen Freund gerade ein relativ großes Plugin zusammen.
Es handelt sich um einen Teppich-Konfigurator (Canvas) der mit Bildern aus dem Media-Manger (eigener Ordner über das Plugin) gefüttert werden kann. Soweit alles knorke, läuft durch den kompletten Checkout mit Preisen und im BackEnd hat die Bestellung auch einen eigenen Reiter mit den Konfigurationen.

Nun kam die Idee auf via Freitextfeld im Media-Manager eine Sortierung und einen „echten“ Bildnamen zu verwenden.

Was auch via Datenbank Abfrage überhaupt kein Problem ist. Aber ich denke mir das es über den

$mediaService = $controller->get('shopware_media.media_service');

besser und vor allem schneller wäre.

Meine Frage: Wie kommt man an die Attribute-Werte eines Bildes aus dem Media-Manger? Es gibt zwar einen MediaService mit der methode getAttribute(), aber das funktioniert überhaut nicht.

Übersehe ich etwas? Für einen Tipp wäre ich dankbar.

Hallo @optimondo

welchen MediaService nutzt du genau? Es gibt nämlich zwei Klassen die so heißen.

Diese Klasse sollte die richtige sein: \Shopware\Bundle\StoreFrontBundle\Service\Core\MediaService

Aufrufen kannst du das dann über

$mediaService = $controller->get('shopware_storefront.media_service');
$media = $mediaService->get($mediaId, $context);

Der Service, den du in deinem Beispiel aufrufst, es für das Lesen/Schreiben/etc von Media-Dateien auf dem Filesystem.

Viele Grüße aus Schöppingen
Michael Telgmann

Hi Michael,

Mit dieser Info und meiner Schulung bei Dir (paar Jahre her) klappt das nun :wink:

$context = $controller->get('shopware_storefront.context_service')->getShopContext();
...

Dann abrufen:

$mediaAttribute = $mediaServiceInterface->get($s['id'], $context)->getAttribute('media')->toArray();

Das kommt dann zurück…

Array
(
    [id] => 72
    [mediaID] => 80
    [sorting] => 307
    [human_name] => Blautanne
)

… und damit können dann die Farben mit usort korrekt angeordnet werden + Mouseover mit echtem Titel:

Vielen Dank für den Tipp!

1 „Gefällt mir“