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

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

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

Сообщение zxczxc12 »

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

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

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

widget/views/index.php

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

<?
FaceFeedWidgetAsset::register($this);
?>
zxczxc12
Сообщения: 161
Зарегистрирован: 2013.01.24, 21:16

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

Сообщение zxczxc12 »

поправочка

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

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

if ($this->beginCache($id, ['dependency' => $dependency])) {
поэтому тут вообще вопрос о цешировании
zxczxc12
Сообщения: 161
Зарегистрирован: 2013.01.24, 21:16

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

Сообщение zxczxc12 »

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

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


Походу когда начинается оптимизация и кеширования - сразу начинает страдать красота :?
urichalex
Сообщения: 994
Зарегистрирован: 2015.08.07, 11:03

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

Сообщение urichalex »

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

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

Сообщение rugabarbo »

Заменить:

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

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

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

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