Magento 2:pub / staticファイルパスを取得する


9

フォルダ内の画像のファイルPATHを取得する必要がありpub/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 2017

回答:


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で機能していません
jafar pinjar

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コントローラーまたはヘルパーで画像のURLを取得しますか?


2
私はパスが必要です
-URLで

@minlare私の更新された答えを見てください。
Khoa TruongDinh 2017

このコードは、RecurringData.phpで試行していますが、機能しません
jafar pinjar
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.