静的コンテンツフォルダーのURLを取得(バックエンド用)


8

管理パネルでボタンをレンダリングするために使用されているブロッククラス内で、静的コンテンツフォルダーのURLを取得する方法は?具体的には、画像のあるフォルダのURLですか。

たとえば、Company_Helloworldモジュールでは、カスタムボタンの画像は次の場所にあります。

app / code / Company / Helloworld / view / adminhtml / web / images /

テスト1

私はこれを試しました:

$url = $this->getViewFileUrl('Company_Helloworld::images/icon.png');

しかし、Magento/backendテーマから画像を取得しようとします:

http://example.com/pub/static/adminhtml/Magento/backend/en_US/Company_Helloworld/images/icon.png

画像はありませんが、画像は実際にはモジュールのフォルダーにあります。

app / code / Company / Helloworld / view / adminhtml / web / images / icon.png

テスト2

この:

$url = $this->getViewFileUrl('images/icon.png');

ただし、Magento/backendテーマから画像を取得しようとしますが、今回はモジュールコンテキストがありません。

http://example.com/pub/static/adminhtml/Magento/backend/en_US/images/icon.png

バックエンドのテーマではなくモジュールに画像を配置する方法はありますか?

回答:


8

使用してみてください:

echo $block->getViewFileUrl('Company_Helloworld::yourImage.png'); 

の2番目の引数として

\ Magento \ Framework \ View \ Element \ AbstractBlock :: getViewFileUrl($ fileId、array $ params = [])

次のパラメータの配列を設定できます:「モジュール」、「_ secure」、「テーマ」、「エリア」、および「ロケール


ありがとう、これは疲れましたが、Magento/backendテーマのアセットのURLが表示されます。私は例を挙げて質問を拡張しました。
maginfortis 2016

bin / magento setup:static-content:deploydevdocs.magento.com/guides/v2.0/config-guide/cli/…を実行します。場所は一見すると正しいようです。また、に見えるdevdocs.magento.com/guides/v2.0/architecture/view/...
Arkadii Chyzhov

この場所は、画像ファイルをMagento/backendテーマのフォルダー内に置くことを前提として正しいです。しかし、私は自分のイメージを自分のモジュールのフォルダーに保持したいと思います。出来ますか?
maginfortis 2016

私が理解したように、あなたは管理パネルで画像を使いたいのですよね?「Magento / backend」はデフォルトの管理テーマの名前です。そのため、例ではロケールとモジュール名よりも正しいテーマです。何があなたを混乱させるのですか?コードでメソッドgetViewFileUrlの使用を探してください。ブロックとテンプレートの実用的な例が見つかります。bin / magento setup:static-content:deployを実行すると、モジュール内のアセットとpub / staticの間の相関関係を見つける必要があります
Arkadii Chyzhov

4

使用してみてください:

<?php
class ...

protected $_assetRepo;

public function __construct(
    ....
    \Magento\Framework\View\Asset\Repository $assetRepo,
    ....
) {
    ....
    $this->_assetRepo = $assetRepo;
    ....
}

さて、あなたの場合、モジュール名は:でCompany_Helloworld、ディレクトリicon.pngから欲しいimagesので

echo $this->_assetRepo->getUrl("Company_Helloworld::images/icon.png");

これがお役に立てば幸いです。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.