Magento 2 Obtenir l'URL de l'image dans le contrôleur ou l'aide?


9

Comment obtenir l'image dans le contrôleur ou l'aide. Par exemple, le chemin du dossier images:

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

Réponses:


13

Utilisez le code ci-dessous pour obtenir l'URL de l'image dans view

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

MISE À JOUR:

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

1
Cette réponse est agréable et simple. La première option a fonctionné pour moi.
Milan Simek

comment entrer dans le fichier contrôleur?
jafar pinjar

20

Pour obtenir le chemin de l'image dans votre assistant ou contrôleur, vous devez utiliser

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

dans votre dossier.
Une fois que vous avez ajouté le référentiel et créé l'objet assetRepo& request, appelez le chemin de l'image avec la fonction,

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

Se référer à la vendor\magento\module-payment\Model\CcConfig.php::getViewFileUrl($fileId, array $params = [])fonction

ÉDITER

Pour obtenir des chemins d'image corrects pour les scripts d'installation, les appels d'API et les Cronjobs, vous devrez ajouter une émulation comme ci-dessous pour obtenir des chemins d'image corrects.

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

Référence: https://magento.stackexchange.com/a/297121/2443


Une erreur survient -> Remarque: propriété non définie: ... :: $ request in
Nitesh

obtenu de votre référence
Nitesh

Merci beaucoup. Son vraiment utile pour obtenir l'URL de l'image.
Nitesh

@Jaimin, cela ne fonctionne pas dans recurringData.php, avez-vous essayé là-bas?
jafar pinjar

1
@JaiminSutariya, oui. J'essaye dans RecurringData.php, où j'ai défini Area_code comme Global, donc l'URL se forme avec _view / global qui ne fonctionne pas, vous pouvez essayer une fois avec RecurringData.php, puis vous aurez une idée du problème
jafar pinjar
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.