Magento 2: Obtenir le chemin du fichier pub / statique


9

J'ai besoin d'obtenir le fichier PATH pour une image dans le pub/static/[VENDOR_THEME]dossier.

Actuellement, je peux le faire en utilisant un assistant:

public function __construct(
    \Magento\Framework\App\Helper\Context $context,
    \Magento\Framework\View\Asset\Repository $assetRepository,
    \Magento\Framework\App\Filesystem\DirectoryList $directoryList
) {
    parent::__construct($context);
    $this->_assetRepo = $assetRepository;
    $this->_directoryList = $directoryList;
}

public function getImagePath($image)
{
    return $this->_directoryList->getPath(DirectoryList::STATIC_VIEW) . 
        '/' . 
        $this->_assetRepo->getStaticViewFileContext()->getPath() . 
        '/' . 
        $image;
}

Existe-t-il une fonction Magento intégrée qui gère cela, donc je n'ai pas à créer mon propre assistant?


Et votre problème?
Khoa TruongDinh

Réponses:


8

Comme l'indique @Khoa TruongDinh, vous pouvez utiliser le Magento\Framework\View\Asset\Repositorypour obtenir une classe de fichiers Magento\Framework\View\Asset\File, que vous pouvez ensuite utiliser pour obtenir diverses données.

/** @var `Magento\Framework\View\Asset\Repository $assetRepository **/
 $asset = $this->assetRepository->createAsset('Magento_Catalog::images/image.png');
 $asset = $this->assetRepository->createAsset('My_Module::images/image.png');

Pour obtenir un élément dans votre dossier de thème, il vous app/design/frontend/VENDOR/THEME/websuffit de supprimer le nom du module comme ci-dessous ....

$asset = $this->assetRepository->createAsset('images/image.png');

Voir Magento\Framework\View\Asset\Filepour les fonctions que vous pouvez utiliser pour obtenir des données de fichier.

// Get the file url
$asset->getUrl();

// Get the file path
$asset->getFilePath();

// Get the content of the file
$asset->getContent();

ce code ne fonctionne pas dans RecurringData.php
jafar pinjar

0

Dans notre bloc, nous devrions essayer avec:

$block->getViewFileUrl('/')

entrez la description de l'image ici

Regarde:

  • vendor/magento/module-backend/view/adminhtml/templates/page/js/require_js.phtml

  • vendor/magento/module-theme/view/frontend/templates/page/js/require_js.phtml

EDIT: nous pouvons utiliserMagento\Framework\View\Asset\Repository

Par exemple: votre image est sous: app/code/Vendor/Module/view/frontend/web/images/image.png

/** @var `Magento\Framework\View\Asset\Repository $assetRepository **/

$this->assetRepository->getUrlWithParams('Vendor_Module::images/image.png', $params);

Voir plus ici: Magento 2 Obtenir l'image URL dans le contrôleur ou l'aide?


2
J'ai besoin du CHEMIN - pas de l'URL
minlare

@minlare voir ma réponse mise à jour.
Khoa TruongDinh

Ce code que j'essaie dans RecurringData.php, son ne fonctionne pas
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.