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.


¿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(); ?>

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.


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(); ?>

0

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

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


2
Esto no funciona en un archivo .phtml porque la propiedad está protegido _storeManager
simonthesorcerer
Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.