Magento 2: Dapatkan pub / Path File statis


9

Saya perlu mendapatkan PATH file untuk gambar di pub/static/[VENDOR_THEME]folder.

Saat ini, saya bisa melakukan ini dengan menggunakan helper:

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

Apakah ada fungsi Magento bawaan yang menangani ini, jadi saya tidak perlu membuat pembantu saya sendiri?


Bagaimana dengan masalah Anda?
Khoa TruongDinh

Jawaban:


8

Sebagai @Khoa TruongDinh menyatakan Anda dapat menggunakan Magento\Framework\View\Asset\Repositoryuntuk mendapatkan kelas file Magento\Framework\View\Asset\File, yang kemudian dapat Anda gunakan untuk mendapatkan berbagai data.

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

Untuk mendapatkan aset di folder tema Anda app/design/frontend/VENDOR/THEME/webcukup lepaskan nama modul seperti di bawah ini ....

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

Lihat Magento\Framework\View\Asset\Filefungsi yang dapat Anda gunakan untuk mendapatkan data file.

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

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

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

kode ini tidak berfungsi di RecurringData.php
jafar pinjar

0

Di blok kami, kami harus mencoba dengan:

$block->getViewFileUrl('/')

masukkan deskripsi gambar di sini

Lihatlah:

  • 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: bisa kita gunakanMagento\Framework\View\Asset\Repository

Misalnya: gambar Anda berada di bawah: 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);

Lihat lebih lanjut di sini: Magento 2 Dapatkan Url gambar di controller atau helper?


2
Saya membutuhkan PATH - bukan url
minlare

@minlare lihat jawaban saya yang diperbarui.
Khoa TruongDinh

Kode ini saya coba di RecurringData.php, tidak berfungsi
jafar pinjar
Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.