Magento 2 Obter URL da imagem no controlador ou auxiliar?

9

Como obter a imagem no controlador ou auxiliar. Por exemplo, o caminho da pasta de imagens:

 /app/code/Nitesh/Module/view/frontend/web/images
 /app/code/Nitesh/Module/view/frontend/web/images/image.png
Nitesh
fonte

Respostas:

13

Use o código abaixo para obter o URL da imagem view

<img src="<?php echo $this->getViewFileUrl('Vendor_Module::images/image.png'); ?>" />

ATUALIZAR:

<?php echo $block->getViewFileUrl('images/demo.jpg'); ?>
BornCoder
fonte
11
Esta resposta é agradável e simples. A primeira opção funcionou para mim.
Milan Simek 31/05
como entrar no arquivo do controlador?
Jafar pinjar
20

Para obter o Image Path em seu Helper ou Controller, você precisa usar

use Magento\Framework\View\Asset\Repository;
use Magento\Framework\App\RequestInterface; // for $this->request

no seu arquivo.
Depois de adicionar o repositório e criar o objeto assetRepo& request, chame o caminho da imagem com a função,

$params = array('_secure' => $this->request->isSecure());
$this->assetRepo->getUrlWithParams('Nitesh_Module::images/image.png', $params);

Consulte a vendor\magento\module-payment\Model\CcConfig.php::getViewFileUrl($fileId, array $params = [])função

EDITAR

Para obter caminhos de imagem corretos para scripts de instalação, chamadas de API e Cronjobs, você precisará adicionar emulação como abaixo para obter os caminhos de imagem corretos.

public function __construct(
    \Magento\Framework\View\Asset\Repository $assetRepo,
    \Magento\Framework\App\RequestInterface $request,
    \Magento\Store\Model\App\Emulation $appEmulation
)
{
    $this->assetRepo = $assetRepo;
    $this->request = $request;
    $this->appEmulation = $appEmulation;
}

public FunctionName($param){
    $this->appEmulation->startEnvironmentEmulation($storeId, \Magento\Framework\App\Area::AREA_FRONTEND, true);

    $params = array('_secure' => $this->request->isSecure());
    $this->assetRepo->getUrlWithParams('Nitesh_Module::images/image.png', $params);

    $this->appEmulation->stopEnvironmentEmulation();
}

Referência: https://magento.stackexchange.com/a/297121/2443

Jaimin Sutariya
fonte
O erro vem -> Aviso: Propriedade indefinida: ... :: $ request in
Nitesh
entendi de sua referência ty
Nitesh 07/02
Valeu mesmo, cara. É realmente útil para obter o URL da imagem.
Nitesh
@Jimin, isso não está funcionando em recurringData.php, você já tentou lá?
Jafar pinjar
11
@JaiminSutariya, Sim. Estou tentando no RecurringData.php, onde defino Area_code como Global, para que o URL esteja se formando com _view / global, que não está funcionando
jafar pinjar 27/11/19