hnpw
28. März 2019 um 14:10
1
Hi
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.
R4M
28. März 2019 um 14:16
2
->getURL('/media/image/thumbnails/' + name + extension);
hnpw
28. März 2019 um 14:20
3
Meinst du so?
die($mediaService->getUrl('media/image/thumbnails/'.$article['image'][0]['path'].'.'.$article['image'][0]['extension']));
Da kommt wieder nur die Domain
R4M
28. März 2019 um 14:28
4
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']
hnpw
28. März 2019 um 14:34
5
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
hnpw
28. März 2019 um 14:43
6
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. Wie bekomme ich den Pfad?
hnpw
29. März 2019 um 11:52
7
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?
R4M
29. März 2019 um 12:22
8
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.
hnpw
29. März 2019 um 12:29
9
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.
hnpw
29. März 2019 um 13:45
10
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']);