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();