Ruta de medios Magento 2.1 en archivo .phtml

9

Cómo obtener la ruta de medios en Magento 2.1. ¿Intenté muchas opciones pero no funciona?

Quiero mostrar la imagen en el front-end dentro del archivo .phtml.

Vishal Tanna
fuente
¿Puede mostrarnos lo que ha probado hasta ahora y cuáles fueron los resultados asociados?
Julien Lachal

Respuestas:

11

puede obtener la ruta de medios por el 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;
        }
    }
    ........
?>

en archivo phtml

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

Se desaconseja el uso de Object Manager según los estándares de codificación de Magento. En un archivo de plantilla, podemos obtener la URL de los medios usando el siguiente código:

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

Según la recomendación de Magento, la raíz del documento de su sitio web debe estar fuera del pubdirectorio durante el desarrollo y debe estar dentro del pubdirectorio cuando se traslade a producción.

Por lo tanto, no podemos codificar el pubdirectorio mientras obtenemos la URL de los medios en los archivos de plantilla. El código anterior le proporcionará la URL de medios correcta independientemente de la ubicación raíz de su documento.

N. Karthic Kannan
fuente
1
Pensar en agregar 20 líneas de código para Object Manager suena horrible solo por considerar.
Mohammed Joraid
6

Obtener ruta de medios por objectManager

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

Obtener ruta de medios por inyección de dependencia

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

Ahora llame a la función getMediaUrl()en phtml

<?php echo $block->getMediaUrl(); ?>
Príncipe Patel
fuente
0

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

Por favor revise este código. Te dará la ruta de los medios.

Mayur
fuente
2
Esto no funciona en un archivo .phtml porque la propiedad está protegido _storeManager
simonthesorcerer