Dapatkan URL folder konten statis (untuk backend)

8

Di dalam kelas blok yang sedang digunakan untuk membuat tombol di panel admin, bagaimana cara mendapatkan URL folder konten statis? Secara khusus, URL folder dengan gambar ?

Misalnya, dalam Company_Helloworldmodul gambar untuk tombol kustom ada di sini:

app / kode / Perusahaan / Helloworld / view / adminhtml / web / images /

Tes 1

Saya mencoba ini:

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

Tetapi ia mencoba mengambil gambar dari Magento/backendtema:

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

sementara gambar tidak ada di sana, gambar sebenarnya ada di folder modul:

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

Tes 2

Dan ini:

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

Tetapi ia juga mencoba untuk mengambil gambar dari Magento/backendtema, kali ini tanpa konteks modul:

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

Apakah ada cara untuk meletakkan gambar di modul dan tidak di tema backend?

maginfortis
sumber

Jawaban:

8

Coba gunakan:

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

Sebagai argumen kedua

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

Anda dapat mengatur larik parameter berikutnya: " module ", " _secure ", " theme ", " area " dan " locale "

Arkadii Chyzhov
sumber
Terima kasih, saya lelah ini tetapi memberikan URL aset dari Magento/backendtema. Saya menyampaikan pertanyaan saya dengan contoh.
maginfortis
Jalankan pengaturan bin / magento: static-content: deploy devdocs.magento.com/guides/v2.0/config-guide/cli/… . Lokasi terlihat benar dari pandangan pertama. Lihat juga devdocs.magento.com/guides/v2.0/architecture/view/…
Arkadii Chyzhov
Lokasi ini benar dengan asumsi bahwa saya meletakkan file gambar saya di dalam folder Magento/backendtema. Tapi saya ingin menyimpan gambar saya di folder modul saya. Apa itu mungkin?
maginfortis
Seperti yang saya mengerti, Anda ingin menggunakan gambar di panel admin, apakah saya benar? "Magento / backend" adalah nama tema admin default, jadi itu tema yang benar untuk contoh Anda, daripada menjadi lokal dan nama modul. Apa yang membingungkan Anda? Cari penggunaan metode getViewFileUrl dalam kode, dan Anda akan menemukan contoh yang berfungsi untuk blok dan template. Jalankan pengaturan bin / magento: static-content: deploy dan Anda harus menemukan korelasi antara aset dalam modul dan pub / statis
Arkadii Chyzhov
4

Coba gunakan:

<?php
class ...

protected $_assetRepo;

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

Sekarang, Dalam kasus Anda nama modul adalah: Company_Helloworlddan Anda inginkan icon.pngdari imagesdirektori begitu

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

Semoga ini bisa membantu Anda.

Technocracker
sumber