https://github.com/php-flasher/php-flasher
The main repository for PHPFlasher, a PHP library that makes it easy to add customizable notification messages to your web applications. Supports Laravel, Symfony, and standalone use. This monorepository enables efficient collaboration and version control among developers.
https://github.com/php-flasher/php-flasher
flash-messages laravel notification-system noty notyf php pnotify sweetalert symfony toastr yoeunes
Last synced: about 2 months ago
JSON representation
The main repository for PHPFlasher, a PHP library that makes it easy to add customizable notification messages to your web applications. Supports Laravel, Symfony, and standalone use. This monorepository enables efficient collaboration and version control among developers.
- Host: GitHub
- URL: https://github.com/php-flasher/php-flasher
- Owner: php-flasher
- License: mit
- Created: 2020-12-01T20:49:15.000Z (over 4 years ago)
- Default Branch: 2.x
- Last Pushed: 2025-03-30T07:41:24.000Z (3 months ago)
- Last Synced: 2025-04-28T00:23:29.661Z (about 2 months ago)
- Topics: flash-messages, laravel, notification-system, noty, notyf, php, pnotify, sweetalert, symfony, toastr, yoeunes
- Language: PHP
- Homepage: https://php-flasher.io
- Size: 20.7 MB
- Stars: 307
- Watchers: 2
- Forks: 20
- Open Issues: 5
-
Metadata Files:
- Readme: README.md
- Changelog: CHANGELOG.md
- Funding: .github/FUNDING.yml
- License: LICENSE
Awesome Lists containing this project
- awesome-morocco - PHPFlasher - flasher/php-flasher.svg?style=social)](https://github.com/php-flasher/php-flasher/stargazers) - A powerful and flexible flash notification system for PHP (Uncategorized / Uncategorized)
README
![]()
# PHPFlasher: Beautiful Notifications Made Simple
## π See It In Action
```php
// In your controller
public function updateProfile(Request $request)
{
// Process form submission
$user = Auth::user();
$user->update($request->validated());
// Show a beautiful notification to the user
flash()->success('Your profile has been updated successfully!');
return redirect()->back();
}
```That's it! PHPFlasher will display an elegant success notification to your user. No JavaScript to write, no frontend setup needed.
## π Compatibility
| Requirements | Version |
|--------------|---------|
| PHP | β₯ 8.2 |
| Laravel | β₯ 11.0 |
| Symfony | β₯ 7.0 |## π Table of Contents
- [Introduction](#-introduction)
- [Features](#-key-features)
- [Installation](#-installation)
- [Usage Examples](#-usage-examples)
- [Themes](#-themes)
- [Adapters](#-adapters)
- [Advanced Configuration](#-advanced-configuration)
- [Adapter Documentation Example](#-adapter-documentation-example)
- [Community & Support](#-community--support)
- [Contributors](#-contributors-and-sponsors)
- [License](#-license)## π Introduction
PHPFlasher is a powerful, framework-agnostic library that makes it simple to add beautiful flash messages to your web applications. It provides a consistent API for displaying notifications across your PHP applications, whether you're using Laravel, Symfony, or any other PHP framework.
Flash messages are short-lived notifications that appear after a user performs an action, such as submitting a form. PHPFlasher helps you create these notifications with minimal effort while ensuring they look great and behave consistently.
## β¨ Key Features
- **Zero JavaScript Required**: Write only PHP code - frontend functionality is handled automatically
- **Framework Support**: First-class Laravel and Symfony integration
- **Beautiful Themes**: Multiple built-in themes ready to use out of the box
- **Multiple Notification Types**: Success, error, warning, and info notifications
- **Highly Customizable**: Positions, timeouts, animations, and more
- **Third-Party Adapters**: Integration with popular libraries like Toastr, SweetAlert, and more
- **API Response Support**: Works with AJAX and API responses
- **TypeScript Support**: Full TypeScript definitions for frontend customization
- **Lightweight**: Minimal performance impact## π¦ Installation
### For Laravel Projects
```bash
# Install the Laravel adapter
composer require php-flasher/flasher-laravel# Set up assets automatically
php artisan flasher:install
```PHPFlasher automatically injects the necessary JavaScript and CSS assets into your Blade templates. No additional setup required!
### For Symfony Projects
```bash
# Install the Symfony adapter
composer require php-flasher/flasher-symfony# Set up assets automatically
php bin/console flasher:install
```PHPFlasher automatically injects the necessary JavaScript and CSS assets into your Twig templates.
## π Usage Examples
### Basic Notifications
```php
// Success notification
flash()->success('Operation completed successfully!');// Error notification
flash()->error('An error occurred. Please try again.');// Info notification
flash()->info('Your account will expire in 10 days.');// Warning notification
flash()->warning('Please backup your data before continuing.');
```### With Custom Titles
```php
flash()->success('Your changes have been saved!', 'Update Successful');
flash()->error('Unable to connect to the server.', 'Connection Error');
```### With Custom Options
```php
flash()->success('Profile updated successfully!', [
'timeout' => 10000, // Display for 10 seconds
'position' => 'bottom-right',
'closeButton' => true,
]);flash()->error('Failed to submit form.', 'Error', [
'timeout' => 0, // No timeout (stay until dismissed)
'position' => 'center',
]);
```### In Controllers
```php
// Laravel
public function store(Request $request)
{
// Process form...
flash()->success('Product created successfully!');
return redirect()->route('products.index');
}// Symfony
public function store(Request $request, FlasherInterface $flasher)
{
// Process form...
$flasher->success('Product created successfully!');
return $this->redirectToRoute('products.index');
}
```### Specific Use Cases
```php
// Form validation errors
if ($validator->fails()) {
flash()->error('Please fix the errors in your form.');
return redirect()->back()->withErrors($validator);
}// Multi-step process
flash()->success('Step 1 completed!');
flash()->info('Please complete step 2.');// With HTML content (must enable HTML option)
flash()->success('Your account is ready!', [
'escapeHtml' => false
]);
```## π¨ Themes
PHPFlasher comes with beautiful built-in themes ready to use immediately:
### Default Theme (Flasher)
The default theme provides clean, elegant notifications that work well in any application:
```php
flash()->success('Operation completed!');
```### Other Built-In Themes
PHPFlasher includes multiple themes to match your application's design:
```php
// Set the theme in your configuration or per notification
flash()->success('Operation completed!', [
'theme' => 'amazon' // Amazon-inspired theme
]);// Other available themes:
// - amber: Warm amber styling
// - aurora: Subtle gradient effects
// - crystal: Clean, transparent design
// - emerald: Green-focused modern look
// - facebook: Facebook notification style
// - google: Google Material Design inspired
// - ios: iOS notification style
// - jade: Soft jade color palette
// - material: Material Design implementation
// - minimal: Extremely clean and simple
// - neon: Bright, attention-grabbing
// - onyx: Dark mode sleek design
// - ruby: Bold ruby red accents
// - sapphire: Blue-focused elegant style
// - slack: Slack-inspired notifications
```### Theme Configuration
You can configure theme defaults in your configuration file:
```php
// Laravel: config/flasher.php
return [
'themes' => [
'flasher' => [
'options' => [
'timeout' => 5000,
'position' => 'top-right',
],
],
'amazon' => [
'options' => [
'timeout' => 3000,
'position' => 'bottom-right',
],
],
],
];
```## π§© Adapters
Beyond PHPFlasher's built-in themes, you can use third-party notification libraries:
### Available Adapters
#### Toastr
```bash
composer require php-flasher/flasher-toastr-laravel # For Laravel
composer require php-flasher/flasher-toastr-symfony # For Symfony
``````php
flash('toastr')->success('Message with Toastr!');
```#### SweetAlert
```bash
composer require php-flasher/flasher-sweetalert-laravel # For Laravel
composer require php-flasher/flasher-sweetalert-symfony # For Symfony
``````php
flash('sweetalert')->success('Message with SweetAlert!');
```#### Noty
```bash
composer require php-flasher/flasher-noty-laravel # For Laravel
composer require php-flasher/flasher-noty-symfony # For Symfony
``````php
flash('noty')->success('Message with Noty!');
```#### Notyf
```bash
composer require php-flasher/flasher-notyf-laravel # For Laravel
composer require php-flasher/flasher-notyf-symfony # For Symfony
``````php
flash('notyf')->success('Message with Notyf!');
```## βοΈ Advanced Configuration
### Laravel Configuration
Publish and customize the configuration:
```bash
php artisan vendor:publish --tag=flasher-config
```This creates `config/flasher.php` where you can configure:
```php
return [
// Default adapter to use
'default' => 'flasher',
// Theme configuration
'themes' => [
'flasher' => [
'options' => [
'timeout' => 5000,
'position' => 'top-right',
],
],
],
// Auto-convert Laravel session flash messages
'auto_create_from_session' => true,
// Automatically render notifications
'auto_render' => true,
// Type mappings for Laravel notifications
'types_mapping' => [
'success' => 'success',
'error' => 'error',
'warning' => 'warning',
'info' => 'info',
],
];
```### Symfony Configuration
Create or edit `config/packages/flasher.yaml`:
```yaml
flasher:
default: flasher
themes:
flasher:
options:
timeout: 5000
position: top-right
auto_create_from_session: true
auto_render: true
types_mapping:
success: success
error: error
warning: warning
info: info
```### Notification Options
Common options you can customize:
```php
flash()->success('Message', [
// Display duration in milliseconds (0 = until dismissed)
'timeout' => 5000,
// Notification position
'position' => 'top-right', // top-right, top-left, bottom-right, bottom-left, top-center, bottom-center
// Display a close button
'closeButton' => true,
// Show progress bar during timeout
'progressBar' => true,
// Right-to-left text direction
'rtl' => false,
// Allow HTML content in notifications
'escapeHtml' => false,
// Custom CSS class
'class' => 'my-custom-notification',
]);
```## π Adapter Documentation Example
Here's a detailed example of using the Toastr adapter with PHPFlasher:
### Installation
```bash
composer require php-flasher/flasher-toastr
```For Laravel:
```bash
composer require php-flasher/flasher-toastr-laravel
```For Symfony:
```bash
composer require php-flasher/flasher-toastr-symfony
```### Usage
#### Basic Usage
```php
use Flasher\Toastr\Prime\ToastrFactory;// Inject the factory
public function __construct(private ToastrFactory $toastr)
{
}public function index()
{
$this->toastr->success('Toastr is working!');
// Or using the global helper with the specified adapter
flash('toastr')->success('Toastr is awesome!');
}
```#### With Options
```php
flash('toastr')->success('Success message', 'Success Title', [
'timeOut' => 5000,
'closeButton' => true,
'newestOnTop' => true,
'progressBar' => true,
'positionClass' => 'toast-top-right',
]);
```#### Available Methods
```php
// Standard notification types
flash('toastr')->success('Success message');
flash('toastr')->info('Information message');
flash('toastr')->warning('Warning message');
flash('toastr')->error('Error message');// Custom notification
flash('toastr')->flash('custom-type', 'Custom message');
```#### Toastr Specific Options
| Option | Type | Default | Description |
|------------------|---------|----------------|--------------------------------------------|
| closeButton | Boolean | false | Display a close button |
| closeClass | String | 'toast-close-button' | CSS class for close button |
| newestOnTop | Boolean | true | Add notifications to the top of the stack |
| progressBar | Boolean | true | Display progress bar |
| positionClass | String | 'toast-top-right' | Position of the notification |
| preventDuplicates | Boolean | false | Prevent duplicates |
| showDuration | Number | 300 | Show animation duration in ms |
| hideDuration | Number | 1000 | Hide animation duration in ms |
| timeOut | Number | 5000 | Auto-close duration (0 = disable) |
| extendedTimeOut | Number | 1000 | Duration after hover |
| showEasing | String | 'swing' | Show animation easing |
| hideEasing | String | 'linear' | Hide animation easing |
| showMethod | String | 'fadeIn' | Show animation method |
| hideMethod | String | 'fadeOut' | Hide animation method |### Advanced Configuration
#### Laravel Configuration
Publish the configuration file:
```bash
php artisan vendor:publish --tag=flasher-toastr-config
```#### Symfony Configuration
Edit your `config/packages/flasher.yaml`:
```yaml
flasher:
toastr:
options:
timeOut: 5000
progressBar: true
```## Learn More
For additional information, see the [PHPFlasher documentation](https://php-flasher.io).
## π₯ Community & Support
### Getting Help
- **Documentation**: Visit [https://php-flasher.io](https://php-flasher.io)
- **GitHub Issues**: [Report bugs or request features](https://github.com/php-flasher/php-flasher/issues)
- **Stack Overflow**: Ask questions with the `php-flasher` tag### Common Use Cases
- Form submission feedback
- AJAX request notifications
- Authentication messages
- Error reporting
- Success confirmations
- System alerts## π Contributors and Sponsors
Join our team of contributors and make a lasting impact on our project!
We are always looking for passionate individuals who want to contribute their skills and ideas.
Whether you're a developer, designer, or simply have a great idea, we welcome your participation and collaboration.Shining stars of our community:
Younes ENNAJI
π» π π§
Salma Mourad
π΅
Nashwan Abdullah
π΅
Arvid de Jong
π΅
Ash Allen
π¨
Tony Murray
π»
StΓ©phane P
π
Lucas Maciel
π¨
Ahmed Gamal
π» π
Brooke.
π
## π¬ Contact
PHPFlasher is being actively developed by yoeunes.
You can reach out with questions, bug reports, or feature requests on any of the following:- [Github Issues](https://github.com/php-flasher/php-flasher/issues)
- [Github](https://github.com/yoeunes)
- [Twitter](https://twitter.com/yoeunes)
- [Linkedin](https://www.linkedin.com/in/younes--ennaji/)
- [Email me directly](mailto:[email protected])## π License
PHPFlasher is open-sourced software licensed under the [MIT license](https://opensource.org/licenses/MIT).
Made with β€οΈ by Younes ENNAJI