php-flasher/flasher-sweetalert-laravel
Installation:
composer require php-flasher/flasher-sweetalert-laravel
Publish the config file (optional but recommended for customization):
php artisan vendor:publish --provider="PHPFlasher\Flasher\FlasherServiceProvider" --tag="config"
First Use Case: Trigger a success flash message in a controller:
use PHPFlasher\Flasher\Facades\Flasher;
public function store(Request $request) {
$request->validate([...]);
// Business logic...
Flasher::success('Your action was completed successfully!');
return redirect()->back();
}
Display in Blade:
Add this to your layout file (e.g., resources/views/layouts/app.blade.php):
@include('flasher::message')
Flash Message Types: Use predefined methods for common use cases:
Flasher::success('Success message');
Flasher::error('Error message');
Flasher::warning('Warning message');
Flasher::info('Info message');
Custom Messages: Create reusable flash messages with custom icons/colors:
Flasher::custom('Custom Title', 'Custom message', 'custom-icon', 'custom-color');
Conditional Flashing: Check for flash messages in Blade:
@if(Flasher::hasMessages())
@include('flasher::message')
@endif
Queueing Messages: Store messages for later display (e.g., after redirect):
Flasher::queue('This will appear on the next page');
Integration with Forms: Flash messages after form submissions:
public function update(Request $request) {
if ($request->has('submit')) {
Flasher::success('Profile updated!');
}
return view('profile.edit');
}
Dynamic Flashing: Pass variables to flash messages:
Flasher::success("User <strong>{$user->name}</strong> created!");
Flash with Buttons: Include action buttons in flash messages:
Flasher::success('Action completed', [
'button' => [
'text' => 'View Details',
'href' => route('details'),
],
]);
Custom Templates: Override the default SweetAlert template:
vendor/php-flasher/flasher-sweetalert-laravel/resources/views/message.blade.php to resources/views/vendor/flasher/message.blade.php.API Responses: Return flash messages in API responses (e.g., for SPA integration):
return response()->json([
'success' => true,
'message' => Flasher::getMessages(),
]);
Middleware Integration: Flash messages in middleware (e.g., for auth checks):
public function handle(Request $request, Closure $next) {
if ($request->user()->isAdmin()) {
Flasher::info('Admin panel access granted');
}
return $next($request);
}
Session Configuration:
session.driver is set to file, database, or redis in .env (not array for flash messages to persist across requests)..env:
SESSION_DRIVER=file
Message Persistence:
Flasher::queue('This will persist until manually cleared');
Blade Template Overrides:
@include('flasher::message') doesn’t work, verify:
flasher view namespace is registered in config/view.php.message.blade.php file exists in the correct location (see "Custom Templates" above).SweetAlert Conflicts:
php artisan vendor:publish --provider="PHPFlasher\Flasher\FlasherServiceProvider" --tag="public"
public/vendor/flasher/sweetalert.css or public/vendor/flasher/sweetalert.js.Message Order:
Flasher::queue('First message', 'priority-high');
Flasher::queue('Second message');
Check Session Data: Dump the session to verify flash messages are stored:
dd(session()->all());
Clear Old Messages: Manually clear flash messages if they persist unexpectedly:
Flasher::clear();
Inspect SweetAlert:
Open browser dev tools (F12) to check if SweetAlert is loaded and if messages appear in the console (e.g., Uncaught Error).
Disable SweetAlert: Temporarily disable SweetAlert to test if the issue is with the package or your app:
config(['flasher.sweetalert.enabled' => false]);
Then use the default toast messages:
@include('flasher::toast')
Custom Flash Types: Extend the package by adding new flash types in a service provider:
public function boot() {
Flasher::extend('custom-type', function ($message) {
return Flasher::custom($message, 'Custom message', 'custom-icon', 'custom-color');
});
}
Usage:
Flasher::customType('Your custom message');
Hooks for Message Processing: Override message formatting in a service provider:
Flasher::macro('formatMessage', function ($message) {
return "<strong>Formatted:</strong> " . e($message);
});
Localization: Localize flash messages by overriding the language file:
vendor/php-flasher/flasher-sweetalert-laravel/resources/lang/en/messages.php to resources/lang/en/messages.php.Custom Flash Drivers: Create a custom driver for storing flash messages (e.g., database):
Flasher::extend('database', function () {
return new CustomDatabaseDriver();
});
Then use it:
Flasher::driver('database')->success('Database-backed message');
How can I help you explore Laravel packages today?