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?

minlare
la source
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();
minlare
la source
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?

Khoa TruongDinh
la source
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