Percorso multimediale Magento 2.1 nel file .phtml


9

Come ottenere il percorso multimediale in Magento 2.1. Ho provato molte opzioni ma non funziona?

Voglio visualizzare l'immagine in front-end all'interno del file .phtml.


Puoi mostrarci cosa hai provato finora e quali sono stati i risultati associati?
Julien Lachal,

Risposte:


11

è possibile ottenere il percorso multimediale con il metodo $ object

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

metodo delle fabbriche

<?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;
        }
    }
    ........
?>

nel file phtml

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

11

L'uso di Object Manager è sconsigliato secondo gli standard di codifica Magento. In un file modello, possiamo ottenere l'URL multimediale utilizzando il seguente codice:

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

Come da raccomandazione di Magento, la radice del documento del tuo sito Web dovrebbe trovarsi fuori dalla pubdirectory durante lo sviluppo e dovrebbe essere all'interno della pubdirectory quando viene spostata in produzione.

Pertanto, non è possibile codificare la pubdirectory durante il recupero dell'URL multimediale nei file modello. Il codice sopra ti fornirà l'URL multimediale corretto indipendentemente dalla posizione principale del documento.


1
+1 Pensare di aggiungere 20 righe di codice per Object Manager sembra orribile solo da considerare.
Mohammed Joraid

7

Ottieni percorso multimediale da objectManager

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

Ottieni percorso multimediale tramite Dependency Injection

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;
}

Ora chiama la funzione getMediaUrl()in phtml

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

0

$ This -> _ storeManager-> getStore () -> getBaseURL (\ Magento \ Framework \ UrlInterface :: URL_TYPE_MEDIA);

Si prega di controllare questo codice. Ti darà il percorso dei media.


2
Questo non funziona in un file .phtml perché la proprietà _storeManager è protetta
simonthesorcerer
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.