Obtener URL de la carpeta de contenido estático (para backend)

8

Dentro de una clase de bloque que se usa para representar un botón en el panel de administración, ¿cómo obtener la URL de la carpeta de contenido estático? Específicamente, URL de la carpeta con imágenes ?

Por ejemplo, en el Company_Helloworldmódulo, aquí se encuentra una imagen para un botón personalizado:

app / code / Company / Helloworld / view / adminhtml / web / images /

Prueba 1

Intenté esto:

$url = $this->getViewFileUrl('Company_Helloworld::images/icon.png');

Pero trata de recuperar la imagen del Magento/backendtema:

http://example.com/pub/static/adminhtml/Magento/backend/en_US/Company_Helloworld/images/icon.png

Mientras la imagen no está allí, la imagen está realmente en la carpeta del módulo:

app / code / Company / Helloworld / view / adminhtml / web / images / icon.png

Prueba 2

Y esto:

$url = $this->getViewFileUrl('images/icon.png');

Pero también trata de recuperar la imagen del Magento/backendtema, esta vez sin contexto de módulo:

http://example.com/pub/static/adminhtml/Magento/backend/en_US/images/icon.png

¿Hay alguna forma de poner la imagen en el módulo y no en el tema de fondo?

maginfortis
fuente

Respuestas:

8

Tratar de usar:

echo $block->getViewFileUrl('Company_Helloworld::yourImage.png'); 

Como un segundo argumento de

\ Magento \ Framework \ View \ Element \ AbstractBlock :: getViewFileUrl ($ fileId, array $ params = [])

puede establecer una matriz de los siguientes parámetros: " módulo ", " _secure ", " tema ", " área " y " locale "

Arkadii Chyzhov
fuente
Gracias, me cansé, pero da URL de los activos del Magento/backendtema. Extendí mi pregunta con ejemplos.
maginfortis
Ejecute la configuración bin / magento: static-content: deploy devdocs.magento.com/guides/v2.0/config-guide/cli/… . La ubicación se ve correcta desde la primera vista. Consulte
Arkadii Chyzhov
Esta ubicación es correcta, suponiendo que coloque mi archivo de imagen dentro de una carpeta de Magento/backendtema. Pero me gustaría mantener mi imagen en la carpeta de mi módulo. ¿Es posible?
maginfortis
Como entendí, quieres usar una imagen en el panel de administración, ¿estoy en lo cierto? "Magento / backend" es un nombre de tema de administrador predeterminado, por lo que ese es el tema correcto para su ejemplo, en lugar de la configuración regional y el nombre del módulo. ¿Qué te confunde? Busque usos del método getViewFileUrl en el código, y encontrará ejemplos de trabajo para bloques y plantillas. Ejecute la configuración bin / magento: static-content: despliegue y debe encontrar la correlación entre los activos en el módulo y pub / static
Arkadii Chyzhov
4

Tratar de usar:

<?php
class ...

protected $_assetRepo;

public function __construct(
    ....
    \Magento\Framework\View\Asset\Repository $assetRepo,
    ....
) {
    ....
    $this->_assetRepo = $assetRepo;
    ....
}

Ahora, en su caso, el nombre del módulo es: Company_Helloworldy desea icon.pngdel imagesdirectorio

echo $this->_assetRepo->getUrl("Company_Helloworld::images/icon.png");

Espero que esto te ayudará.

Technocracker
fuente