Skip to main content

FlashNotices

Отправки мгновенных (flash) уведомлений пользователю.

Компонент Flash (или FlashNoticesApi) - это внутреннее API фреймворка XSyst, предназначенное для отправки мгновенных (flash) уведомлений пользователю.

Flash-уведомления накапливаются в рамках обработки текущего запроса и отображаются в браузере пользователя в виде всплывающих карточек уведомлений. Сразу после отображения flash-уведомления удаляются и при следующем запросе не отображаются.

Используя FlashNoticesApi, разработчик может в любом участке кода сайта добавить flash-уведомления.

Количество flash-уведомлений не ограничено.

Flash-уведомления могут быть разных типов. В зависимости от типа и настроек уведомления оно будет по-разному отображаться в браузере пользователя.

Типы flash-уведомлений

На данный момент поддерживаются следующие типы flash-уведомлений:

  • info
    Просто информационное сообщение. Например, "Nika добавила вас в друзья". В качестве иконки рекомендуется использовать i в голубом цвете.
  • success
    Сообщение об удачно завершённом действии. Например, "Ваш профль сохранён". В качестве иконки рекомендуется использовать зелёную галочку.
  • fail
    Сообщение о неудачно завершённом действии. Например, "Ошибка при сохранёнии материала". В качестве иконки рекомендуется использовать красный крестик.
  • attention
    Информационное сообщение, требующее особого внимания пользователя. Например, "Действие Вашего тарифа заканчивается через 2 дня!". В качестве иконки рекомендуется использовать желтый восклюцательный знак.
  • warning
    Предупреждение. Например, "Вы получили бан на 1 сутки!". В качестве иконки рекомендуется использовать красный восклицательный знак (может быть в красном круге).
  • error
    Ошибка. Например, "Ошибка соединения с сервером". В качестве иконки рекомендуется использовать красный восклицательный знак.

Flash-уведомления одинаково отображаются как в результате обработаки обычного http-запроса, так и в результате обработки ajax-запроса.

Внутренне flash-уведомления хранятся в сессии. За счёт этого в результате редиректов уведомления не потеряются и будут показаны пользователю.

Сервис FlashNoticesApi и фасад FlashNotices

Для работы с FlashNoticesApi предназначен сервисный класс XSyst/Flash/FlashNoticesApi и фасад XSyst/Flash/FlashNotices.

Получение ссылки на сервис FlashNoticesApi

Вариант с использованием FlashNoticesApi:

//1. Использование менеджера сервисов xlib():
$flashApi = xlib(FlashNoticesApi::class);
$flashApi->add('Привет, человек!');

Вариант с использованием FlashNotices:

FlashNotices::add('Привет, человек!');

Описание основных методов класса FlashNoticesApi

  • add($message, string $defaultType = 'info')
    Добавляет уведомление $message в очередь уведомлений.

  • getAndClean(string $type=null): array
    Возвращает все уведомления типа $type, после чего удаляет их.
    Если $type пустой, то будут возвращены все уведомления, после чего они будут удалены.

  • peek(string $type = null): array
    Возвращает все уведомления типа $type, не удаляя их из массива.
    Если $type пустой, то возвращает все уведомления (также без удаления).

  • clean(string $type=null)
    Удаляет все уведомления типа $type.
    Если $type пустой, то удаляются все уведомления.

  • has(string $type): bool
    Проверяет, есть ли уведомления типа $type.

  • isEmpty(): bool
    Проверяет, есть ли flash-уведомления.

Примеры использования

//1. Добавление flash-уведомлений в список
FlashNotices::add('У вас 2 непрочитанных сообщений');

FlashNotices::add('Ошибка при сохранении комметария', 'error');

FlashNotices::add([
'text' => 'У вас 5 непрочитанных сообщений. Срочно прочитайте - люди волнуются!',
'type' => 'attention',
]);

FlashNotices::add([
'text' => '<b>Nika</b> оценила ваш пост',
'type' => 'info',
'sound' => true,
]);

//2. Получение и очистка flash-уведомлений типа 'error':
if(FlashNotices::has('error')) {
$errorFlashes = FlashNotices::getAndClean('error');
foreach($errorFlashes as $type => $flash) {
...
}
}
//3. Очистка всех flash-уведомлений
FlashNotices::clean();