Кеширование виджета новым поведением CacheableWidgetBehavior. Assets

Общие вопросы по использованию второй версии фреймворка. Если не знаете как что-то сделать и это про Yii 2, вам сюда.
Ответить
zxczxc12
Сообщения: 142
Зарегистрирован: 2013.01.24, 21:16

Кеширование виджета новым поведением CacheableWidgetBehavior. Assets

Сообщение zxczxc12 » 2018.03.02, 03:19

Решил попробовать новое поведение по кешированию виджетов

Все работает, но есть проблема.
При применениии этого поведения, перестал подключаться Asset для этого виджета и как следствие - отсутствие необходимых для работы виджета js и css

Как победить ситуацию , если учесть, что мне как то не хочется css и js впихивать в основной app.css и app.js файл ?

widget/views/index.php

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

<?
FaceFeedWidgetAsset::register($this);
?>

zxczxc12
Сообщения: 142
Зарегистрирован: 2013.01.24, 21:16

Re: Кеширование виджета новым поведением CacheableWidgetBehavior. Assets

Сообщение zxczxc12 » 2018.03.02, 04:01

поправочка

такое происходит и при обычном кешировании

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

if ($this->beginCache($id, ['dependency' => $dependency])) {
поэтому тут вообще вопрос о цешировании

zxczxc12
Сообщения: 142
Зарегистрирован: 2013.01.24, 21:16

Re: Кеширование виджета новым поведением CacheableWidgetBehavior. Assets

Сообщение zxczxc12 » 2018.03.02, 05:33

Отвечу сам себе

Нужно инициировать ассеты виджета в том файле view, в который вставлен виджет
Иначе - никак


Походу когда начинается оптимизация и кеширования - сразу начинает страдать красота :?

urichalex
Сообщения: 957
Зарегистрирован: 2015.08.07, 11:03

Re: Кеширование виджета новым поведением CacheableWidgetBehavior. Assets

Сообщение urichalex » 2018.03.02, 10:32

А что если ассеты определить до кэширования?

Аватара пользователя
rugabarbo
Сообщения: 1063
Зарегистрирован: 2015.06.21, 16:21
Контактная информация:

Re: Кеширование виджета новым поведением CacheableWidgetBehavior. Assets

Сообщение rugabarbo » 2018.03.02, 11:04

Заменить:

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

FaceFeedWidgetAsset::register($this);
– на:

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

$this->renderDynamic('\my\full\namespace\to\this\widget\FaceFeedWidgetAsset::register($this);');
При этом прописать настоящий namespace виджета.

Ответить