Puede obtener la URL de medios en su archivo de plantilla usando la forma siguiente, pero sin usar objectmanager debe tener que definir el archivo de bloque con el __construct()
método con define storeManagerInterface en el método de construcción.
En su archivo de bloque phtml cree la función __construct.
public $ _storeManager;
public function __construct(\Magento\Store\Model\StoreManagerInterface $storeManager)
{
$this->_storeManager = $storeManager;
}
En su archivo phtml, llame al método siguiente para obtener mediaurl,
$mediaUrl = $this ->_storeManager-> getStore()->getBaseUrl(\Magento\Framework\UrlInterface::URL_TYPE_MEDIA );
echo $ mediaUrl;
Esta es la forma correcta de obtener URL de medios en Magento 2.
\Magento\Framework\View\Element\Template
, ya tiene una instancia deStoreManagerInterface
($this->_storeManager
).A partir de 2.1, no hay forma directa de obtener la URL de los medios sin:
Rakesh mencionó una forma de hacerlo.
Otra forma es usar la variable protegida
$_urlBuilder
que se incluye para cada bloque como se define enAbstractBlock
: https://github.com/magento/magento2/blob/f2d309a88298886460351c04973a4ff95c7a91c0/lib/internal/Magento/Framework/View/Element/AbstractBlock.php # L186Por lo tanto, no tiene que modificar el constructor de su bloque y simplemente puede agregar el siguiente método:
Luego, en su plantilla puede llamar:
fuente
Si no desea tomarse la molestia de extender \ Magento \ Framework \ View \ Element \ Template, y desea que su archivo .phtml use el bloque \ Magento \ Framework \ View \ Element \ Template, entonces puede usar este atajo:
fuente
Usaré la respuesta de Raphael y la extenderé, pero en lugar de agregar el método a la clase de bloque, ¿por qué no crear un ayudante y agregarlo allí?
Comience creando un nuevo módulo de la manera habitual, y dentro de la raíz, cree una nueva carpeta llamada "Helper" y agregue el código requerido allí:
Una vez activado y compilado, podrá usarlo dentro de su archivo de plantilla utilizando el siguiente método:
¡Espero que usted (y posiblemente otros) encuentren esto de gran utilidad!
fuente
Al menos en 2.2.6, puede usar
Magento\Framework\UrlInterface::getDirectUrl()
fuente