Caminho do Magento 2.1 Media no arquivo .phtml

9

Como obter o caminho da mídia no Magento 2.1. Eu tentei muitas opções, mas não está funcionando?

Quero exibir a imagem no front-end dentro do arquivo .phtml.

Vishal Tanna
fonte
Você pode nos mostrar o que você tentou até agora e quais foram os resultados associados?
Julien Lachal 15/09/16

Respostas:

11

você pode obter o caminho da mídia pelo método $ object

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

método de fábricas

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

no arquivo phtml

<?php echo $block->getMediaUrl(); ?>
Qaisar Satti
fonte
11

O uso do Object Manager é desencorajado conforme os padrões de codificação do Magento. Em um arquivo de modelo, podemos obter o URL da mídia usando o seguinte código:

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

De acordo com a recomendação do Magento, a raiz do documento do seu site deve estar fora do pubdiretório durante o desenvolvimento e deve estar dentro do pubdiretório quando movida para a produção.

Portanto, não podemos codificar o pubdiretório ao obter o URL da mídia nos arquivos de modelo. O código acima fornecerá o URL correto da mídia, independentemente da localização raiz do documento.

N. Karthic Kannan
fonte
11
+1 Pensar em adicionar 20 linhas de código para o Object Manager parece horrível apenas para considerar.
Mohammed Joraid 8/05/19
6

Obter caminho da mídia por objectManager

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

Obter caminho da mídia por injeção de dependência

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

Agora chame a função getMediaUrl()em phtml

<?php echo $block->getMediaUrl(); ?>
Prince Patel
fonte
0

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

Por favor, verifique este código. Isso lhe dará o caminho da mídia.

Mayur
fonte
2
Isso não funciona em um arquivo .phtml porque a propriedade _storeManager é protegida
simonthesorcerer