Простая реализация для "флеш" сообщений в приложениях на базе Laravel фреймворка.
Отличительные особенности:
- Сообщения по уровням (info, success, warning, danger);
- Множественные сообщения (и различных, типов и для типа);
- Стек сообщений и возможность взять сообщения только определенного уровня;
- Дополнительные данные сообщений (через массив или текучий интерфейс);
- Сообщение, отправленное на странице, не перекрывает сообщения, отправленные при редиректе на эту страницу;
- Отсутсвие привязки к js или верстке сообщения.
Для установки используйте composer
composer require larapac/flash
Для "отправки" сообщения можно воспользоваться хэлпером flash()
flash('Some info message');
Для того, чтобы взять все сообщения в отображении:
@foreach (flash()->messages() as $message)
{{ $message->level }}: {{ $message->text }}
@endforeach
Сообщения всегда будут иметь поля
text
level
(success, info, warning, danger)
Разметка для вывода самих сообщений не регламентируется сервисом и может быть любой.
Сообщения можно отправлять сколько угодно и с разным уровнем:
flash('Info level message');
flash()->info('Info level message two');
flash()->success('Success level message');
flash()->warning('Warning level message');
flash()->warning('Warning level message two');
flash()->danger('Danger level message');
flash()->error('Danger level message from alias method');
Возможно взять сообщения только определенного уровня:
Errors:
@foreach(flash()->messages('danger') as $message)
{{ $message->text }};
@endforeach
@foreach($errors->all() as $message)
{{ $message }};
@endforeach
К сообщению можно добавлять дополнительные данные:
//use array
flash()->info('Message', ['important' => true, 'timeout' => 3]);
//fluent style
flash()->info('Message')->important()->timeout(3);
@foreach (flash()->messages() as $message)
{{ $message->level }}: {{ $message->text }} {{ $message->important ? '!' : '.' }}
@endforeach
Для тех, кто не любит микропакеты, можно воспользоваться следующим кодом: FlashMessageSender
Так же, возможно, вам больше подойдет один из следующих пакетов: