Flash Notifications for Laravel
, (*1)
, (*2)
๐งฉ Features
- Flash multiple messages.
- Use built in notification levels (success, error, ...) or imagine your own.
โ
Requirements
- PHP >= 8.1
- Laravel >= 10.0
๐ฆ Install
composer require codezero/laravel-flash
Laravel will automatically register the ServiceProvider., (*3)
๐ Usage
Somewhere in your views, include the flash notifications partial:, (*4)
@include('flash::notifications')
Then you can flash a message to the session in your controllers., (*5)
flash()->success('Update succeeded!');
You can also use the facade \CodeZero\Flash\Facades\Flash
instead of the flash()
helper., (*6)
The message will be displayed once on the next page load., (*7)
๐จ Notification Levels
You can use the built in notification levels:, (*8)
flash()->info('info message');
flash()->success('success message');
flash()->warning('warning message');
flash()->error('error message');
Or you can specify a custom level:, (*9)
flash()->notification('message', 'level');
๐ Rendering Notifications
Customize the notification views
If you want to customize the templates, you can publish the views:, (*10)
php artisan vendor:publish --provider="CodeZero\Flash\FlashServiceProvider" --tag="views"
You will find the views in resources/views/vendor/flash
., (*11)
Default views for built in notification levels
A notification will be rendered using a view file which name corresponds with the notification level., (*12)
So flash()->success('message')
will load a success.blade.php
view file., (*13)
These views live in resources/views/vendor/flash/notifications
., (*14)
Default view for custom notification levels
If no corresponding file can be found in the package's view folder, then the default.blade.php
view file will be used., (*15)
So flash()->notification('message', 'custom')
will load the default.blade.php
view file., (*16)
This view lives in resources/views/vendor/flash/notifications
., (*17)
Add views for custom notification levels
To add view files for custom levels, create them in resources/views/vendor/flash/notifications
., (*18)
Override default notification views
You can override the view file to be used when you flash a notification:, (*19)
// 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
., (*20)
Access notification values in a view
Notification views will have a $notification
variable which is an instance of \CodeZero\Flash\Notification
., (*21)
This gives you access to:, (*22)
{{ $notification->message }}
{{ $notification->level }}
๐ง Create Your Own Custom Flash Class
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., (*23)
<?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
:, (*24)
public function register()
{
$this->app->bind('flash', \App\YourCustomFlash::class);
}
โ๏ธ Publish Configuration File
php artisan vendor:publish --provider="CodeZero\Flash\FlashServiceProvider" --tag="config"
You will now find a flash.php
file in the config
folder., (*25)
๐ง Testing
composer test
โ๏ธ Credits
๐ Security
If you discover any security related issues, please e-mail me instead of using the issue tracker., (*26)
๐ Changelog
A complete list of all notable changes to this package can be found on the
releases page., (*27)
๐ License
The MIT License (MIT). Please see License File for more information., (*28)