jalle19 / laravel-unshitty-flash
Highly opinionated flash message service for Laravel
Requires
- php: >= 7.0
- illuminate/http: ^5.4
- illuminate/support: ^5.4
Requires (Dev)
- phpunit/phpunit: ^6.0
This package is auto-updated.
Last update: 2024-10-13 00:46:27 UTC
README
Highly opinionated flash message service for Laravel. In contrast to practically all other similar libraries I've seen, this one:
- Supports multiple messages
- Supports multiple identical messages
- Supports flashing immediately, i.e. to the current request
- Let's you configure the session key used
- Forces you to inject the service, no magic facade
- Forces you to operate on the
Request
object itself
Installation
Install the package:
composer require jalle19/laravel-unshitty-flash
Register the service provider:
'providers' => [ ... Jalle19\Laravel\UnshittyFlash\FlashServiceProvider::class, ... ]
Publish the configuration file:
php artisan vendor:publish --provider="Jalle19\Laravel\UnshittyFlash\FlashServiceProvider"
Usage
Inject FlashService
into the controller you want to create flash messages from, then use it like this:
$this->flashService->success($request, 'Some successful message'); $this->flashService->info($request, 'Some informational message'); $this->flashService->warning($request, 'Some warning'); $this->flashService->danger($request, 'Some dangerous message');
If you need to flash a message to the current request, (e.g. from a middleware that displays a permanent message), pass
true
as the third parameter:
$this->flashService->info($request, 'Permanently visible message', true);
If the message levels above are not enough for you, you can use an arbitrary level using the message()
method:
$this->flashService->message($request, 'Some rant about libraries', 'rant');
To render the flash messages in your views, you can use something like the following snippet:
@foreach (session()->get(config('flash.session_key'), []) as $notification) <div class="alert alert-{{ $notification['level'] }} alert-dismissible in"> <button type="button" class="close" data-dismiss="alert" aria-hidden="true">×</button> {!! $notification['message'] !!} </div> @endforeach