как получить путь к папке asset из контроллера yii2?

Общие вопросы по использованию второй версии фреймворка. Если не знаете как что-то сделать и это про Yii 2, вам сюда.
Ответить
oughtem2
Сообщения: 34
Зарегистрирован: 2019.10.26, 20:50

как получить путь к папке asset из контроллера yii2?

Сообщение oughtem2 »

Есть класс MenuGenerator. По нажатию на кнопку он генерирует html код, который записывает в файл и отдаёт его браузеру как чистый html. Некоторые рессурсы, ссылки на которые мне надо получить, публикуются в assets. Используется тема с такой структурой папок:

- frontend
- - themes
- - - neat
- - - - views
- - - - - layouts
- - - - - site
- - - - web
- - web
- - - assets <-- папка, в которую публикуются ресурсы

В этой ситуации у меня нет объекта `View`, поэтому, чтоб получить ссылку на файл ресурса в указанной папке я не могу использовать

Код: Выделить всё

$this->theme->getUrl('img/promo/actuality.jpg')
не могу юзать

Код: Выделить всё

 $this->assetManager->getBundle(MyAsset::className()); 
не могу

Код: Выделить всё

MyAsset::register($this);
также не могу обратиться к методу getAssetUrl из AssetManager.

Как в этой ситуации получить ссылку на папку assets типа frontend/web/assets/328e8b1a ?
yiiliveext
Сообщения: 910
Зарегистрирован: 2019.08.13, 01:49

Re: как получить путь к папке asset из контроллера yii2?

Сообщение yiiliveext »

Код: Выделить всё

Yii::$app->view->theme->getUrl('img/promo/actuality.jpg')
oughtem2
Сообщения: 34
Зарегистрирован: 2019.10.26, 20:50

Re: как получить путь к папке asset из контроллера yii2?

Сообщение oughtem2 »

Походу я был не прав в том, что вида нет. Этот класс не видит тему. Штука в том, что если распечатать

Код: Выделить всё

print_r(Yii::$app->view);
то вот, что получаю

Код: Выделить всё

yii\web\View Object
(
    [assetBundles] => Array
        (
        )

    [title] => 
    [metaTags] => Array
        (
        )

    [linkTags] => Array
        (
        )

    [css] => Array
        (
        )

    [cssFiles] => Array
        (
        )

    [js] => Array
        (
        )

    [jsFiles] => Array
        (
        )

    [_assetManager:yii\web\View:private] => 
    [context] => 
    [params] => Array
        (
        )

    [renderers] => 
    [defaultExtension] => php
    [theme] => 
    [blocks] => 
    [cacheStack] => Array........
как видите, theme == null.
Тут, как я понимаю, надо дать понять эту классу, что тема вообще есть. Надо прописать

Код: Выделить всё

Yii::$app->view->theme = что-то там
?
oughtem2
Сообщения: 34
Зарегистрирован: 2019.10.26, 20:50

Re: как получить путь к папке asset из контроллера yii2?

Сообщение oughtem2 »

Да, конечно, вот тут велось обсуждение по мои темам
yiiliveext
Сообщения: 910
Зарегистрирован: 2019.08.13, 01:49

Re: как получить путь к папке asset из контроллера yii2?

Сообщение yiiliveext »

oughtem2 писал(а): 2020.01.07, 07:01 Да, конечно, вот тут велось обсуждение по мои темам
Если тема правильно настроена в конфигурации, то объект theme всегда создается контейнером при первом обращении к компоненту view.
Ответить