Flash messages to the session with Laravel.
- Flash multiple messages.
- Use built in notification levels (success, error, ...) or imagine your own.
- PHP >= 8.1
- Laravel >= 10.0
composer require codezero/laravel-flash
Laravel will automatically register the ServiceProvider.
Somewhere in your views, include the flash notifications partial:
@include('flash::notifications')
Then you can flash a message to the session in your controllers.
flash()->success('Update succeeded!');
You can also use the facade
\CodeZero\Flash\Facades\Flash
instead of theflash()
helper.
The message will be displayed once on the next page load.
You can use the built in notification levels:
flash()->info('info message');
flash()->success('success message');
flash()->warning('warning message');
flash()->error('error message');
Or you can specify a custom level:
flash()->notification('message', 'level');
If you want to customize the templates, you can publish the views:
php artisan vendor:publish --provider="CodeZero\Flash\FlashServiceProvider" --tag="views"
You will find the views in resources/views/vendor/flash
.
A notification will be rendered using a view file which name corresponds with the notification level.
So flash()->success('message')
will load a success.blade.php
view file.
These views live in resources/views/vendor/flash/notifications
.
If no corresponding file can be found in the package's view folder, then the default.blade.php
view file will be used.
So flash()->notification('message', 'custom')
will load the default.blade.php
view file.
This view lives in resources/views/vendor/flash/notifications
.
To add view files for custom levels, create them in resources/views/vendor/flash/notifications
.
You can override the view file to be used when you flash a notification:
// use 'resources/views/custom.blade.php' instead of
// 'resources/views/vendor/flash/notifications/success.blade.php'
flash()->success('message')->setView('custom');
The specified view name is relative to your app's view folder resources/views
.
Notification views will have a $notification
variable which is an instance of \CodeZero\Flash\Notification
.
This gives you access to:
{{ $notification->message }}
{{ $notification->level }}
If you don't want to use the built in notification levels and want to create your own, you can extend the \CodeZero\Flash\BaseFlash
class.
<?php
namespace App;
use CodeZero\Flash\BaseFlash;
class YourCustomFlash extends BaseFlash
{
/**
* Flash a notification.
*
* @param string $message
*
* @return \CodeZero\Flash\Notification
*/
public function danger($message)
{
return $this->notification($message, 'danger');
}
}
Then change the flash
binding in the register
method of your app/Providers/AppServiceProvider
:
public function register()
{
$this->app->bind('flash', \App\YourCustomFlash::class);
}
php artisan vendor:publish --provider="CodeZero\Flash\FlashServiceProvider" --tag="config"
You will now find a flash.php
file in the config
folder.
composer test
If you discover any security related issues, please e-mail me instead of using the issue tracker.
A complete list of all notable changes to this package can be found on the releases page.
The MIT License (MIT). Please see License File for more information.