Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Виджет Alert работает неверно #223

Open
wartur opened this issue Jul 4, 2020 · 5 comments
Open

Виджет Alert работает неверно #223

wartur opened this issue Jul 4, 2020 · 5 comments

Comments

@wartur
Copy link

wartur commented Jul 4, 2020

Дело в том, что он всегда стартует сессию. А это неверное поведение. Мое мнение, что не нужно запускать сессию, если на то нет явных причин.

На строке 52
https://github.com/yiisoft/yii2-app-basic/blob/master/widgets/Alert.php#L52

Требуется за место

$session = Yii::$app->session;

Напиасть:

$session = Yii::$app->session;
if (empty($session->getHasSessionId())) {
    return null;
}

Тогда все будет работать отлично!

@YiiRocks
Copy link

YiiRocks commented Jul 5, 2020

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.

@samdark
Copy link
Member

samdark commented Jul 7, 2020

As @thoulah noted, it won't work because it needs session to read flash messages.

@samdark samdark closed this as completed Jul 7, 2020
@wartur
Copy link
Author

wartur commented Jul 7, 2020

@samdark Я понимаю, что требуются сессии. Может быть меня не правильно поняли?
Соль состоит в том, что, если нет сессионной куки, то её не нужно стартовать вхолостую. У меня тут 300к обращений в сутки от поисковых движков, зачем мне нужно держать в базе данных лишних 13 тысяч гарантированно холостых сессий в час?

Если нет Сесссионной куки, значит и Алертов нет. Все. Все логично.

По сути говоря, Yii::$app->user->isGuest работает абсолютно верно, там сначала идет проверка того, есть ли сессионная кука, если есть, то он идет дальше, иначе стопится НЕ стартуя сессию. Тоже самое надо реализовать в этом шаблоне и все.

Кстати я помню, что именно я этот баг в свое время находил именно внутри фреймворка, а тут тоже самое только с виджетом, ну не надо сессию дергать и стартовать без надобности.
yiisoft/yii2#13059

@samdark
Copy link
Member

samdark commented Jul 8, 2020

Оно фейлит тесты в advanced как минимум...

@samdark samdark removed this from the 2.0.37 milestone Aug 7, 2020
@pyostrike
Copy link

Можно написать так например:

        $session = Yii::$app->session;
        if (!$session->getIsActive()) {
            return null;
        }

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

3 participants