Weave Code
Code Weaver
Helps Laravel developers discover, compare, and choose open-source packages. See popularity, security, maintainers, and scores at a glance to make better decisions.
Feedback
Share your thoughts, report bugs, or suggest improvements.
Subject
Message

Flasher Sweetalert Laravel Laravel Package

php-flasher/flasher-sweetalert-laravel

View on GitHub
Deep Wiki
Context7

Getting Started

Minimal Setup

  1. 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"
    
  2. 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();
    }
    
  3. Display in Blade: Add this to your layout file (e.g., resources/views/layouts/app.blade.php):

    @include('flasher::message')
    

Implementation Patterns

Core Workflows

  1. 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');
    
  2. Custom Messages: Create reusable flash messages with custom icons/colors:

    Flasher::custom('Custom Title', 'Custom message', 'custom-icon', 'custom-color');
    
  3. Conditional Flashing: Check for flash messages in Blade:

    @if(Flasher::hasMessages())
        @include('flasher::message')
    @endif
    
  4. Queueing Messages: Store messages for later display (e.g., after redirect):

    Flasher::queue('This will appear on the next page');
    
  5. 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');
    }
    

Advanced Patterns

  1. Dynamic Flashing: Pass variables to flash messages:

    Flasher::success("User <strong>{$user->name}</strong> created!");
    
  2. Flash with Buttons: Include action buttons in flash messages:

    Flasher::success('Action completed', [
        'button' => [
            'text' => 'View Details',
            'href' => route('details'),
        ],
    ]);
    
  3. Custom Templates: Override the default SweetAlert template:

    • Copy vendor/php-flasher/flasher-sweetalert-laravel/resources/views/message.blade.php to resources/views/vendor/flasher/message.blade.php.
    • Modify as needed (e.g., add custom styling or logic).
  4. API Responses: Return flash messages in API responses (e.g., for SPA integration):

    return response()->json([
        'success' => true,
        'message' => Flasher::getMessages(),
    ]);
    
  5. 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);
    }
    

Gotchas and Tips

Common Pitfalls

  1. Session Configuration:

    • Ensure your session.driver is set to file, database, or redis in .env (not array for flash messages to persist across requests).
    • Fix: Update .env:
      SESSION_DRIVER=file
      
  2. Message Persistence:

    • Flash messages are one-time-use by default. To reuse them, queue them explicitly:
      Flasher::queue('This will persist until manually cleared');
      
  3. Blade Template Overrides:

    • If @include('flasher::message') doesn’t work, verify:
      • The flasher view namespace is registered in config/view.php.
      • The message.blade.php file exists in the correct location (see "Custom Templates" above).
  4. SweetAlert Conflicts:

    • If SweetAlert styles/JS conflict with your app, override the package’s assets:
      • Publish assets:
        php artisan vendor:publish --provider="PHPFlasher\Flasher\FlasherServiceProvider" --tag="public"
        
      • Customize public/vendor/flasher/sweetalert.css or public/vendor/flasher/sweetalert.js.
  5. Message Order:

    • Messages are displayed in FIFO (First-In-First-Out) order. To control order, queue messages explicitly:
      Flasher::queue('First message', 'priority-high');
      Flasher::queue('Second message');
      

Debugging Tips

  1. Check Session Data: Dump the session to verify flash messages are stored:

    dd(session()->all());
    
  2. Clear Old Messages: Manually clear flash messages if they persist unexpectedly:

    Flasher::clear();
    
  3. Inspect SweetAlert: Open browser dev tools (F12) to check if SweetAlert is loaded and if messages appear in the console (e.g., Uncaught Error).

  4. 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')
    

Extension Points

  1. 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');
    
  2. Hooks for Message Processing: Override message formatting in a service provider:

    Flasher::macro('formatMessage', function ($message) {
        return "<strong>Formatted:</strong> " . e($message);
    });
    
  3. Localization: Localize flash messages by overriding the language file:

    • Copy vendor/php-flasher/flasher-sweetalert-laravel/resources/lang/en/messages.php to resources/lang/en/messages.php.
    • Update translations as needed.
  4. 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');
    
Weaver

How can I help you explore Laravel packages today?

Conversation history is not saved when not logged in.
Prompt
Add packages to context
No packages found.
besmartand-pro/php-quality-config
sentix/ai-chatbot
terminal42/code-quality-tools
codifyo/ts-generator-bundle
testo/fiber
mintobit/jobqueue
a4sex/maintenance-bundle
a4sex/entity-date-update
a4sex/client-identifier
a4sex/base-utilites
a4sex/key-value-storage
a4sex/micro-status
chilldev/dependency-injection-extra
datinglibre/datinglibre-app-api
biberltd/corebundle
bricre/symfony-bundle-test
biberltd/logbundle
dominium/http-adapter-bundle
dominium/google-analytics
a4sex/auto-clean-entity