An open API service indexing awesome lists of open source software.

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.

Awesome Lists containing this project

README

        



Help Palestine




PHPFlasher Logo


Author Badge
Source Code Badge
GitHub Release Badge
License Badge
Packagist Downloads Badge
GitHub Stars Badge
Supported PHP Version Badge

# 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
Younes ENNAJI

πŸ’» πŸ“– 🚧
Salma Mourad
Salma Mourad

πŸ’΅
Nashwan Abdullah
Nashwan Abdullah

πŸ’΅
Arvid de Jong
Arvid de Jong

πŸ’΅
Ash Allen
Ash Allen

🎨
Tony Murray
Tony Murray

πŸ’»
StΓ©phane P
StΓ©phane P

πŸ“–


Lucas Maciel
Lucas Maciel

🎨
Ahmed Gamal
Ahmed Gamal

πŸ’» πŸ“–
Brooke.
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



⭐ Star if you found this useful ⭐