Yii 2 - Отображение флеш (пользовательских) сообщений на сайте

2016-08-10
Yii

Yii 2 - отображение флеш сообщений на сайте Как отображать простейшие пользовательские уведомления на сайте с использованием фреймворка Yii 2.

Немного теории

Флеш сообщения в данном случае - это уведомления отображаемые пользователю при каких либо событиях.

В Yii 2 уже встроен механизм для работы с флеш сообщениями. Работает он по такому принципу:

  1. С помощью метода \Yii::$app->session->addFlash() добавляем сообщение в сессию.
  2. Сообщение в сессии хранится до тех пор пока оно оттуда не будет извлечено методом Yii::$app->session->getAllFlashes().
  3. Как только сообщение извлечено, оно удаляется из сессии.

Реализация флеш сообщений

Далее, в качестве кодовой базы будет использован basic шаблон приложения предоставляемый Yii 2. Как установить basic шаблон приложения описано в этой статье.

Теперь реализуем флеш сообщения на практике. В данном примере рассматриваются простейшие пользовательские уведомления, без каких либо анимаций и пр. Эти уведомления будут просто отображаться в верхней части сайта перед выводом остального контента.

  1. Сначала создадим вспомогательный скрипт представления, в котором разместим код выводящий флеш сообщения. Для этого необходимо создать файл \views\layouts\main\flashes.php со следующим содержанием:

    <?php foreach(Yii::$app->session->getAllFlashes() as $type => $messages): ?>
    <?php foreach($messages as $message): ?>
        <div class="alert alert-<?= $type ?>" role="alert"><?= $message ?></div>
    <?php endforeach ?>
    <?php endforeach ?>
  2. Далее необходимо подключить только что созданное представление flashes.php в шаблон \views\layouts\main.php:

Yii 2 - отображение флеш сообщений на сайте

  1. Теперь можно проверить как работают флеш сообщения, для этого в контроллере \controllers\SiteController.php добавляем следующие строки кода:

Yii 2 - отображение флеш сообщений на сайте

  1. Обновляем страницу в браузере и видим результат:

Yii 2 - отображение флеш сообщений на сайте

Заключение

Вообще это немного не полная реализация флеш сообщений. Потому что сейчас они отображаются при каждом обновлении главной страницы. В реальных приложениях флеш сообщения отображаются только после каких либо действий, и далее пропадают. Например, пользователю можно отобразить сообщение после регистрации о том, что ему необходимо подтвердить свой e-mail адрес, это сообщение достаточно отобразить один раз после чего оно должно исчезнуть.