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.

Vishal Tanna
quelle
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(); ?>
Qaisar Satti
quelle
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.

N. Karthic Kannan
quelle
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(); ?>
Prinz Patel
quelle
0

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

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

Mayur
quelle
2
Dies funktioniert nicht in einer .phtml-Datei, da die Eigenschaft _storeManager geschützt ist
simonthesorcerer