# Vom virtuellen Media-Pfad zum Shopware\\Bundle\\StoreFrontBundle\\Struct

**URL:** https://forum.shopware.com/t/vom-virtuellen-media-pfad-zum-shopware-bundle-storefrontbundle-struct/40101
**Category:** Programmierung
**Created:** [26. September 2016 um 07:57 UTC](https://forum.shopware.com/t/vom-virtuellen-media-pfad-zum-shopware-bundle-storefrontbundle-struct/40101 "2016-09-26T07:57:42Z")
**Posts on this page:** 5
**Page:** 1

<div class="post-metadata">

### Author: ![tworabbits](https://avatars.discourse-cdn.com/v4/letter/t/d2c977/32.png) [@tworabbits](https://forum.shopware.com/u/tworabbits)
#### Post date: [26. September 2016 um 07:57 UTC](https://forum.shopware.com/t/vom-virtuellen-media-pfad-zum-shopware-bundle-storefrontbundle-struct/40101/1 "2016-09-26T07:57:42Z")

</div>

Hallo zusammen,

ich arbeite derzeit an einem Plugin, welches u.a. ein Einkaufswelten-Element beinhaltet.&nbsp;Mittels des MediaSelectionFields kann im Backend (Konfiguration Einkaufswagen-Element) ein Bild ausgewählt werden. Über das MediaSelectionField erhalte ich allerdings lediglich den Pfad zum Medium, nicht aber das vollständige Struct inkl. z.B. bereits vorhandener Thumbnails/Retina-Sources, etc. Um mein Frontend-Template responsive gestalten zu können, hätte ich gerne ein `Shopware\Bundle\StoreFrontBundle\Struct`, finde aber keinen Constructor bzw. irgendeinen Service, welcher den virtuellen Media-Pfad für mich in dieses Struct überführt? Könnte ihr mir hier einen Tipp geben?

&nbsp;

Vielen Dank und Grüße,

Jonas

---

<div class="post-metadata">

### Author: ![tworabbits](https://avatars.discourse-cdn.com/v4/letter/t/d2c977/32.png) [@tworabbits](https://forum.shopware.com/u/tworabbits)
#### Post date: [26. September 2016 um 08:10 UTC](https://forum.shopware.com/t/vom-virtuellen-media-pfad-zum-shopware-bundle-storefrontbundle-struct/40101/2 "2016-09-26T08:10:42Z")

</div>

Nach sehr langem Studium des Cores habe ich zufällig die Antwort direkt nach dem Posten hier im Forum gefunden. Über die File-ID und den richtigen MediaService (habe zuvor mit&nbsp;‘shopware\_media.media\_service’ gearbeitet)&nbsp;bekomme komme ich zum gewünschten Resultat:

```
$context = $this->get('shopware_storefront.context_service')->getShopContext();
$mediaService = Shopware()->Container()->get('shopware_storefront.media_service');
$mediaService->get(<>, $context);

```

&nbsp;

Gruß, Jonas

---

<div class="post-metadata">

### Author: ![tworabbits](https://avatars.discourse-cdn.com/v4/letter/t/d2c977/32.png) [@tworabbits](https://forum.shopware.com/u/tworabbits)
#### Post date: [26. September 2016 um 10:17 UTC](https://forum.shopware.com/t/vom-virtuellen-media-pfad-zum-shopware-bundle-storefrontbundle-struct/40101/3 "2016-09-26T10:17:51Z")

</div>

Da meine letzte Antwort noch nicht die eigentliche Frage beantwortet und ich den Reverse-Lookup im einfachsten Fall&nbsp;ebenso benötige, hier meine Variante vom Media-Pfad, über die ID zum Struct:

```
$mediaId = Shopware()->Db()->fetchOne("SELECT id FROM s_media WHERE path = ?", [<>]);
$context = $this->get('shopware_storefront.context_service')->getShopContext();
$mediaService = $this->get('shopware_storefront.media_service');
$mediaService->get($mediaId, $context);

```

Oder gibt es hier schönere Alternativen, die keinen direkten DB-Zugriff erfordern?

---

<div class="post-metadata">

### Author: ![dkamenev](https://avatars.discourse-cdn.com/v4/letter/d/c0e974/32.png) [@dkamenev](https://forum.shopware.com/u/dkamenev)
#### Post date: [26. September 2016 um 14:50 UTC](https://forum.shopware.com/t/vom-virtuellen-media-pfad-zum-shopware-bundle-storefrontbundle-struct/40101/4 "2016-09-26T14:50:09Z")

</div>

Hast du das mal über die Models versucht?

Ungetestet aber das hier habe ich im Backend controller von Shopware gefunden:

&nbsp;

```
 $this-\>mediaRepository = Shopware()-\>Models()-\>getRepository('Shopware\Models\Media\Media'); $mediaQuery = $this-\>getMediaRepository()-\>getMediaByPathQuery($media\_path); $mediaModel = $mediaQuery-\>getOneOrNullResult();

```

&nbsp;

Das hier ist das statement im Model, scheint das richtige zu sein:

&nbsp;

```
 public function getMediaByPathQueryBuilder($path) { $builder = $this-\>getEntityManager()-\>createQueryBuilder(); $builder-\>select(array('media')); $builder-\>from('Shopware\Models\Media\Media', 'media') -\>where('media.path = ?1') -\>setParameter(1, $path); return $builder; }
```

---

<div class="post-metadata">

### Author: ![tworabbits](https://avatars.discourse-cdn.com/v4/letter/t/d2c977/32.png) [@tworabbits](https://forum.shopware.com/u/tworabbits)
#### Post date: [29. September 2016 um 23:58 UTC](https://forum.shopware.com/t/vom-virtuellen-media-pfad-zum-shopware-bundle-storefrontbundle-struct/40101/5 "2016-09-29T23:58:42Z")

</div>

Vielen Dank, das ist perfekt!
