Magento 2: Ottieni percorso file pub / statico


9

Devo ottenere il file PATH per un'immagine nella pub/static/[VENDOR_THEME]cartella.

Attualmente, posso farlo usando un aiutante:

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

Esiste una funzione Magento integrata che lo gestisce, quindi non devo creare il mio aiuto?


E il tuo problema?
Khoa TruongDinh,

Risposte:


8

Come afferma @Khoa TruongDinh è possibile utilizzare il Magento\Framework\View\Asset\Repositoryper ottenere una classe di file Magento\Framework\View\Asset\File, che è quindi possibile utilizzare per ottenere vari dati.

/** @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');

Per ottenere risorse nella cartella del tema è app/design/frontend/VENDOR/THEME/websufficiente rimuovere il nome del modulo come di seguito ....

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

Vedere le Magento\Framework\View\Asset\Filefunzioni che è possibile utilizzare per ottenere i dati del file.

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

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

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

questo codice non funziona in RecurringData.php
jafar pinjar,

0

Nel nostro blocco, dovremmo provare con:

$block->getViewFileUrl('/')

inserisci qui la descrizione dell'immagine

Guarda:

  • 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: possiamo usareMagento\Framework\View\Asset\Repository

Ad esempio: l'immagine è sotto: 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);

Vedi di più qui: Magento 2 Ottieni l'URL dell'immagine nel controller o nell'helper?


2
Ho bisogno del PERCORSO - non
dell'URL

@minlare vedi la mia risposta aggiornata.
Khoa TruongDinh

Questo codice che sto provando in RecurringData.php, non funziona
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.