Magento 2:获取发布/静态文件路径


9

我需要获取文件夹中图像的文件PATHpub/static/[VENDOR_THEME]

目前,我可以使用助手来做到这一点:

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

是否有内置的Magento函数可以处理此问题,所以我不必创建自己的帮助器?


你的问题呢?
Khoa TruongDinh

Answers:


8

如@Khoa TruongDinh所述,您可以使用Magento\Framework\View\Asset\Repository获取文件类Magento\Framework\View\Asset\File,然后可以使用该文件类获取各种数据。

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

要在主题文件夹中获取资产,app/design/frontend/VENDOR/THEME/web只需剥离模块名称,如下所示...。

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

请参阅Magento\Framework\View\Asset\File以获取可用于获取文件数据的功能。

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

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

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

此代码在RecurringData.php中
不起作用

0

在我们的区块中,我们应该尝试:

$block->getViewFileUrl('/')

在此处输入图片说明

看一看:

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

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

编辑:我们可以使用Magento\Framework\View\Asset\Repository

例如:您的图片在下: 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);

在此处查看更多信息:Magento 2在控制器或帮助器中获取图像网址?


2
我需要
PATH-

@minlare看到我的最新答案。
Khoa TruongDinh

我在RecurringData.php中尝试的这段代码不起作用
jafar pinjar
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.