Magento 2 Ottieni l'URL dell'immagine nel controller o nell'helper?


9

Come ottenere l'immagine nel controller o nell'helper. Ad esempio, il percorso della cartella delle immagini:

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

Risposte:


13

Utilizzare il codice seguente per ottenere l'URL dell'immagine view

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

AGGIORNARE:

<?php echo $block->getViewFileUrl('images/demo.jpg'); ?>

1
Questa risposta è simpatica e semplice. La prima opzione ha funzionato per me.
Milano Simek,

come ottenere nel file del controller?
jafar pinjar,

20

Per ottenere Image Path nel tuo Helper o Controller, devi usare

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

nel tuo file.
Dopo aver aggiunto il repository e creato l'oggetto assetRepo& request, chiama il percorso dell'immagine con la funzione,

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

Fare riferimento alla vendor\magento\module-payment\Model\CcConfig.php::getViewFileUrl($fileId, array $params = [])funzione

MODIFICARE

Per ottenere percorsi di immagine corretti per script di installazione, chiamate API e Cronjobs, sarà necessario aggiungere l'emulazione come di seguito per ottenere percorsi di immagine corretti.

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

Riferimento: https://magento.stackexchange.com/a/297121/2443


L'errore arriva -> Avviso: proprietà non
definita

preso dal tuo riferimento
Nitesh

Grazie mille amico. È davvero utile per ottenere l'URL dell'immagine.
Nitesh

@Jaimin, questo non funziona in recurringData.php, ci hai provato?
jafar pinjar,

1
@JaiminSutariya, Sì. Sto provando in RecurringData.php, dove ho impostato Area_code su Global, quindi l'Url si sta formando con _view / global che non funziona, potresti provare una volta con RecurringData.php, quindi avrai l'idea del problema
jafar pinjar
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.