Получить URL-адрес папки статического содержимого (для серверной части)

8

Как получить URL-адрес папки со статическим содержимым в классе блока, который используется для отображения кнопки на панели администратора? Конкретно, URL папки с изображениями ?

Например, в Company_Helloworldмодуле изображение для пользовательской кнопки находится здесь:

Приложение / код / ​​Компания / Helloworld / просмотр / adminhtml / веб / изображения /

Тест 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

в то время как изображение не там, изображение фактически находится в папке модуля:

Приложение / код / ​​Компания / Helloworld / просмотр / adminhtml / веб / изображения / icon.png

Тест 2

И это:

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

Но он также пытается извлечь изображение из Magento/backendтемы, на этот раз без контекста модуля:

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

Есть ли способ поместить изображение в модуль, а не в тему бэкэнда?

maginfortis
источник

Ответы:

8

Попробуй использовать:

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

В качестве второго аргумента

\ Magento \ Framework \ View \ Element \ AbstractBlock :: getViewFileUrl ($ fileId, массив $ params = [])

Вы можете установить массив следующих параметров: " module ", " _secure ", " theme ", " area " и " locale "

Аркадий Чижов
источник
Спасибо, я устал от этого, но он дает URL ресурсов из Magento/backendтемы. Я расширил мой вопрос с примерами.
maginfortis
Запустите установку bin / magento: static-content: deploy devdocs.magento.com/guides/v2.0/config-guide/cli/… . Расположение выглядит правильно с первого взгляда. Также загляните в devdocs.magento.com/guides/v2.0/architecture/view/…
Аркадий Чижов
Это правильное расположение, если я поместил свой файл изображения в папку с Magento/backendтемой. Но я хотел бы сохранить мое изображение в папке моего модуля. Является ли это возможным?
maginfortis
Как я понял, вы хотите использовать изображение в панели администратора, я прав? «Magento / backend» - это имя темы по умолчанию для администратора, так что это правильная тема для вашего примера, кроме языка и имени модуля. Что вас смущает? Найдите в коде использование метода getViewFileUrl, и вы найдете рабочие примеры для блоков и шаблонов. Запустите bin / magento setup: static-content: deploy, и вы должны найти корреляцию между активами в модуле и pub / static
Аркадий Чижов
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");

Надеюсь, что это поможет вам.

Technocracker
источник