Image URL / Pfad

Hi :slight_smile:

ich habe in meinem Controller einen Artikel:

$articleResource = \Shopware\Components\Api\Manager::getResource('Article');
$article = $articleResource->getOne($aid);

Wie bekomme ich die URL des ersten Bildes? Ich dachte es geht so, aber das funktioiniert nicht:

$mediaService = $this->get('shopware_media.media_service');
die($mediaService->getUrl('media/image/'.$article['image'][0]['path'].'.'.$article['image'][0]['extension']));

Das gibt mir nur die Domain meines Shops aus.

->getURL('/media/image/thumbnails/' + name + extension);

 

Meinst du so?

die($mediaService->getUrl('media/image/thumbnails/'.$article['image'][0]['path'].'.'.$article['image'][0]['extension']));

Da kommt wieder nur die Domain :confused:

Ich meinte es so - bei einem Thumbnail von 200x200:

$mediaService = $this->container->get('shopware_media.media_service');
$source = '/media/image/thumbnails/TestArtikel_200x200.jpg';
$image = $mediaService->getUrl( $source );

und

$article['image'][0]['path']

ersetzen mit NAME

$article['image'][0]['name']

 

Das mit dem „thumbnails/“ funktioniert bei mir irgendie nicht, allerdings funktioiniert das:

die($mediaService->getUrl('/media/image/'.$article['images'][0]['path'].'.'.$article['images'][0]['extension']));

ich hatte den / am anfang vergessen und image statt images geschrieben

Ich haben gerade rausgefunden, dass das nicht meine Lösung ist. Ich brauche den Pfad auf der Festplatte und nicht die URL für den Browser. :confused: Wie bekomme ich den Pfad?

Ich möchte das bild in eine PDF einbauen, dass ich aus dem Kontroller generiere. Daher brauche ich den Pfad des Bildes im Dateisystem. Wie kann ich den bekommen?

Eigentlich sollte der oben erwähnte Code (unter der Angabe von Name und Extention des Bildes, nicht path) auch auf einer lokalen Umgebung funktionieren. Leider kann ich dazu aber nichts sagen, da meine Testumgebungen auf einem realen Server liegt. Mit lokalen Testumgebungen habe ich leider nur schlechte Erfahrung gemacht.

Ja, das funktioniert auch, aber es kommt eben eine URL dabei heraus nach diesem Format:

h t t p://domainname.de/pfad/zum/bild . j p g 

Ich brauche allerdings soetwas wie: /var/www/foldervonshopware/

Meine Umgebung läuft auf einem Linux-Server, nicht lokal auf meinem PC.

ich habe eine Lösung gefunden:

private function getImagePath($filename)
{
    $mediaService = $this->get('shopware_media.media_service');
    $image = $mediaService->getUrl('/media/image/'.$filename);
    $path = explode("media",$image);
    return __DIR__.'/../../../../../media'.$path[1];
}


$imgPath = $this->getImagePath($article['images'][0]['path'].'.'.$article['images'][0]['extension']);