Obter URL da pasta de conteúdo estático (para back-end)

8

Dentro de uma classe de bloco que está sendo usada para renderizar um botão no painel de administração, como obter o URL da pasta de conteúdo estático? Especificamente, URL da pasta com imagens ?

Por exemplo, no Company_Helloworldmódulo, uma imagem para um botão personalizado está localizada aqui:

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

Teste 1

Eu tentei isso:

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

Mas ele tenta recuperar a imagem do Magento/backendtema:

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

enquanto a imagem não estiver lá, na verdade a imagem está na pasta do módulo:

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

Teste 2

E isto:

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

Mas também tenta recuperar a imagem do Magento/backendtema, desta vez sem o contexto do módulo:

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

Existe alguma maneira de colocar a imagem no módulo e não no tema de back-end?

maginfortis
fonte

Respostas:

8

Tente usar:

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

Como segundo argumento de

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

você pode definir uma matriz dos próximos parâmetros: " module ", " _secure ", " theme ", " area " e " locale "

Arkadii Chyzhov
fonte
Obrigado, eu cansei isso, mas ele fornece URL de ativos do Magento/backendtema. Estendi minha pergunta com exemplos.
Maginfortis
Execute a configuração bin / magento: static-content: deploy devdocs.magento.com/guides/v2.0/config-guide/cli/… . A localização parece correta desde a primeira vista. Veja também devdocs.magento.com/guides/v2.0/architecture/view/…
Arkadii Chyzhov 23/02/16
Esse local está correto, pressupondo que eu coloquei meu arquivo de imagem dentro de uma pasta de Magento/backendtema. Mas eu gostaria de manter minha imagem na pasta do meu módulo. É possível?
23616 maginfortis
Pelo que entendi, você deseja usar uma imagem no painel de administração, certo? "Magento / back-end" é um nome de tema de administrador padrão, portanto esse é o tema correto para o seu exemplo, do que o código do idioma e do módulo. O que confunde você? Procure os usos do método getViewFileUrl no código e você encontrará exemplos de trabalho para blocos e modelos. Run bin / setup magento: static-content: Implantar e você deve encontrar correlação entre ativos no módulo e pub / estática
Arkadii Chyzhov
4

Tente usar:

<?php
class ...

protected $_assetRepo;

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

Agora, no seu caso, o nome do módulo é: Company_Helloworlde você deseja icon.pngdo imagesdiretório

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

Espero que isso ajude você.

Technocracker
fonte