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?

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

Khoa TruongDinh
sumber
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