Нужны ли события в виджетах?

Обсуждаем разработку фреймворка: дизайн компонентов, API, пакеты
Ответить

Вы использовали глобальные события виджетов?

Да, напишу в ответе зачем
0
Голосов нет
Нет, но напишу как можно было
0
Голосов нет
Нет
9
100%
 
Всего голосов: 9

Аватара пользователя
samdark
Администратор
Сообщения: 9489
Зарегистрирован: 2009.04.02, 13:46
Откуда: Воронеж
Контактная информация:

Нужны ли события в виджетах?

Сообщение samdark »

https://github.com/yiisoft/widget/issues/5

В Yii 2 были события для виджетов: init, beforeRun, afterRun. Единственное для чего они использовались в ядре — CacheableWidgetBehavior, который при добавлении к виджету делал его кешируемым.

В Yii 3, в отличие от Yii 2, нет behavior-ов и событий уровня объекта. События работают глобально через event dispatcher.

При портировании виджетов мы перенесли также и события, но я что-то задумался, а нужны ли они? Единственным использованием их, о котором я знаю, были behaviors, такие как`CacheableWidgetBehavior`. А вот про глобальное использование вроде того, что в коде ниже, я не знаю:

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

Event::on(Widget::class, Widget::EVENT_BEFORE_RUN, function ($event) {
    // handle it somehow
});
AlikDex
Сообщения: 20
Зарегистрирован: 2015.07.28, 18:07

Re: Нужны ли события в виджетах?

Сообщение AlikDex »

Кому надо, могут и руками в принципе триггернуть.
Аватара пользователя
maleks
Сообщения: 1985
Зарегистрирован: 2012.12.26, 12:56

Re: Нужны ли события в виджетах?

Сообщение maleks »

Тоже сам не сталкивался с необходимостью использовать глобальные да и обычные события в виджетах.
Но вдруг кто то и использует, для цмс-ных штук например, может кто то помнит theme developer в друпале?, где он каждому элементу на странице фронта добавляет рамку и контекстную менюшку с дебаг информацией.
Yii2 universal module sceleton - for basic and advanced templates
Аватара пользователя
samdark
Администратор
Сообщения: 9489
Зарегистрирован: 2009.04.02, 13:46
Откуда: Воронеж
Контактная информация:

Re: Нужны ли события в виджетах?

Сообщение samdark »

maleks, это делается выставлением элемента class для виджетов. Далее навешивается меню уже через JS.

В итоге события убиты.
Ответить