Open wartur opened 4 years ago
You can use Alert without session in \yii\bootstrap\Alert::widget
. In the code you link to it is required, as it is used for Flash Messages.
As @Thoulah noted, it won't work because it needs session to read flash messages.
@samdark Я понимаю, что требуются сессии. Может быть меня не правильно поняли? Соль состоит в том, что, если нет сессионной куки, то её не нужно стартовать вхолостую. У меня тут 300к обращений в сутки от поисковых движков, зачем мне нужно держать в базе данных лишних 13 тысяч гарантированно холостых сессий в час?
Если нет Сесссионной куки, значит и Алертов нет. Все. Все логично.
По сути говоря, Yii::$app->user->isGuest работает абсолютно верно, там сначала идет проверка того, есть ли сессионная кука, если есть, то он идет дальше, иначе стопится НЕ стартуя сессию. Тоже самое надо реализовать в этом шаблоне и все.
Кстати я помню, что именно я этот баг в свое время находил именно внутри фреймворка, а тут тоже самое только с виджетом, ну не надо сессию дергать и стартовать без надобности. https://github.com/yiisoft/yii2/issues/13059
Оно фейлит тесты в advanced как минимум...
Можно написать так например:
$session = Yii::$app->session;
if (!$session->getIsActive()) {
return null;
}
Дело в том, что он всегда стартует сессию. А это неверное поведение. Мое мнение, что не нужно запускать сессию, если на то нет явных причин.
На строке 52 https://github.com/yiisoft/yii2-app-basic/blob/master/widgets/Alert.php#L52
Требуется за место
Напиасть:
Тогда все будет работать отлично!