Magento 2.1 Medienpfad in der HTML-Datei


9

So erhalten Sie den Medienpfad in Magento 2.1. Ich habe viele Optionen ausprobiert, aber es funktioniert nicht?

Ich möchte das Bild im Front-End in einer .phtml-Datei anzeigen.


Können Sie uns zeigen, was Sie bisher versucht haben und welche Ergebnisse damit verbunden waren?
Julien Lachal

Antworten:


11

Sie können den Medienpfad mit der $ object- Methode abrufen

$objectManager = \Magento\Framework\App\ObjectManager::getInstance();
echo $objectManager->get('Magento\Store\Model\StoreManagerInterface')
                    ->getStore()
                    ->getBaseUrl(\Magento\Framework\UrlInterface::URL_TYPE_MEDIA);

Fabriken Methode

<?php
    namespace Namespace\Modulename\Block;
    use Magento\Framework\ObjectManagerInterface;

    class Banners extends Template
    {

        protected $objectManager;
        public function __construct( 
            ....... 
            ObjectManagerInterface $objectManager
                       ...) {

                    ...........
                    $this->objectManager = $objectManager;

                    ...............
        }
        public function getMediaUrl(){

            $media_dir = $this->objectManager->get('Magento\Store\Model\StoreManagerInterface')
                ->getStore()
                ->getBaseUrl(\Magento\Framework\UrlInterface::URL_TYPE_MEDIA);

            return $media_dir;
        }
    }
    ........
?>

in der HTML- Datei

<?php echo $block->getMediaUrl(); ?>

11

Von der Verwendung von Object Manager wird gemäß den Codierungsstandards von Magento abgeraten. In einer Vorlagendatei können wir die Medien-URL mit dem folgenden Code abrufen:

$this->helper('\Magento\Cms\Helper\Wysiwyg\Images')->getBaseUrl()

Gemäß der Empfehlung von Magento sollte sich das Dokumentenstammverzeichnis Ihrer Website pubwährend der Entwicklung außerhalb des Verzeichnisses und pubbeim Verschieben in die Produktion innerhalb des Verzeichnisses befinden.

Daher können wir das pubVerzeichnis nicht hart codieren, während die Medien-URL in den Vorlagendateien abgerufen wird. Mit dem obigen Code erhalten Sie die richtige Medien-URL, unabhängig von Ihrem Dokumentstammspeicherort.


1
+1 Das Hinzufügen von 20 Codezeilen für Object Manager klingt schrecklich, wenn man nur darüber nachdenkt.
Mohammed Joraid

6

Rufen Sie den Medienpfad mit objectManager ab

$objectManager = \Magento\Framework\App\ObjectManager::getInstance();
echo $objectManager->get('Magento\Store\Model\StoreManagerInterface')
                    ->getStore()
                    ->getBaseUrl(\Magento\Framework\UrlInterface::URL_TYPE_MEDIA);

Medienpfad durch Abhängigkeitsinjektion abrufen

protected $_storeManager;

public function __construct( 
    ...
    \Magento\Store\Model\StoreManagerInterface $storeManager,
    ...
) {
    ...
    $this->_storeManager = $storeManager;
    ...
}

public function getMediaUrl()
{
    $mediaUrl = $this->_storeManager
                     ->getStore()
                     ->getBaseUrl(\Magento\Framework\UrlInterface::URL_TYPE_MEDIA);
    return $mediaUrl;
}

Rufen Sie nun die Funktion getMediaUrl()in phtml auf

<?php echo $block->getMediaUrl(); ?>

0

$ this -> _ storeManager-> getStore () -> getBaseUrl (\ Magento \ Framework \ UrlInterface :: URL_TYPE_MEDIA);

Bitte überprüfen Sie diesen Code. Es gibt Ihnen Medienpfad.


2
Dies funktioniert nicht in einer .phtml-Datei, da die Eigenschaft _storeManager geschützt ist
simonthesorcerer
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.