ist die Frage nicht verständlich oder bin ich der einziege der im Backend Bilder als IDs speichert? Hab das so aus dem Link oben.
Ich könnte natürlich in der DB nach der ID suchen und Pfad lesen, aber da muss ich schon was eigentes basteln. Wie sieht das von Shopware Seite aus.
Ich komme von Joomla und da kann man Problem los in einem Formular „Medien“ speichern und auf de Seite vorne ausgeben. Sorry aber, hab so ein geführl als ob Shopware in Beta Phase ist, alles muss man im Cor nachschauen :).
Möglichkeit A (einfach)
Bei valueField gibst du statt ‘id’ einfach ‘path’ an.
Im Template nutzt du dann {media path=$hierStehtDerPath} drin. Dann wandelt es dir den kurzen Path zu einer vollständigen URL, das kannst du im img-Tag verwenden
Möglichkeit B
Du nutzt den MediaService um dir mit der Bild ID die Daten des Bildes zu holen. Die Daten schreibstu du dann in eine Template-Variable. (Alternativ nutzt du noch den LegacyStructConverter um aus dem Bild-Struct ein einfaches assoziatives Array zu machen)
A
Wen der „Pfad“ statt der „ID“ gespeichert wird, dann lädt Shopware nicht das Bild im Backend, in diesem Media Form Element. Deswegen wird auch in dem oben Link zu „ID“ graten. (Das ist ja auch eine komische Funkiotn, man speichert das Bild, weiß aber beim nächsten betrachten nicht welches das ist. Hallo )
Oder geht das anders, Pfad speichern und im Backend wird das Bild angezeigt?
B
Könntest du mir auch ein Script zeigen, bzw. hier wird nicht auf die ID eingegenagen MediaService.
Wocher weiß ich welche Funktino das ist, um aus der ID ein Pfad zu bekommen? ->getPathById() ? ->getUrlById() ? Wo kann ich das nachschauen.
Falls jemand auch so eine Frage hat, hier ist der Code dazu.
Die Bilder sind als IDs in der Datenbank gespeichert.
Mit Hilfe der Funktion $mediaService->get(), wird der Pfad des Bilder ermittelt.
Dieser Code durchläuft eine Array und tauscht die Image-ID durch Image-Pfad aus. Die For-Schleife ist eigentlich selbsterklärend. Die wichtigen Funktionen und Objekte sind $mediaService, $context und $mediaService->get().
/* @var \Shopware\Bundle\StoreFrontBundle\Service\Core\MediaService $mediaService */
$mediaService = $this->container->get('shopware_storefront.media_service');
/* @var \Shopware\Bundle\StoreFrontBundle\Struct\ShopContext $context */
$context = $this->container->get('shopware_storefront.context_service')->getShopContext();
// Set image path by (image) id
foreach ($answers as $key => $answer) {
/* @var \Shopware\Bundle\StoreFrontBundle\Struct\Media $media */
$media = $mediaService->get($answer['image'], $context);
if ($media) {
$answers[$key]['image'] = $media->getPath();
}
}