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 Laravel Package

php-flasher/flasher

php-flasher/flasher adds elegant flash notifications to PHP apps, with Laravel integration. Configure multiple notifiers, queue messages, and display them easily in templates. Supports popular JS libraries and customizable themes for consistent UX.

View on GitHub
Deep Wiki
Context7

Getting Started

Install via Composer: composer require php-flasher/flasher. In Laravel, register the service provider (auto-discovered in Laravel 5.5+) and publish config with php artisan vendor:publish --tag=flasher-config. Start using it in controllers:

use Flasher\Toastr\FlasherInterface;

public function store(Request $request)
{
    $post = Post::create($request->validated());
    Flasher::addSuccess('Post published successfully!');
    return redirect()->route('posts.show', $post);
}

Check config/flasher.php for default channel, renderer, and template settings—these determine how messages appear client-side (e.g., Toastr, Noty, or custom JS).

Implementation Patterns

  • Controller messaging: Use addSuccess(), addError(), addWarning(), addInfo() for standard feedback.
  • JSON/API responses: Call Flasher::getMessages() after operations to return structured notifications (e.g., ['type' => 'success', 'message' => 'Saved']) to frontend toast libraries.
  • Exception handling middleware: Catch exceptions and map them to flash messages:
    public function handle($request, Closure $next)
    {
        try {
            return $next($request);
        } catch (ValidationException $e) {
            Flasher::addError(implode(', ', $e->errors()));
            return back()->withInput();
        }
    }
    
  • Channel isolation: For multi-context notifications (e.g., page-level vs. modal-specific), configure multiple channels in flasher.php and scope calls:
    Flasher::withChannel('modal')->addInfo('Please verify this field before saving.');
    

Gotchas and Tips

  • Session driver matters: Ensure your session driver (e.g., file, database, redis) supports atomic writes—array driver won’t persist flashes across redirects.
  • Client-side not automatic: This package only queues messages server-side; you must include Flasher’s JS/CSS (e.g., @push('scripts') <script src="/flasher.min.js"></script> @endpush) in your Blade layout to render them.
  • Timing is critical: Avoid calling Flasher::add*() after headers are sent (e.g., in terminate middleware or finally blocks of async jobs)—flashes may be lost silently. Guard usage:
    if (!app()->runningInConsole() && !headers_sent()) {
        Flasher::addWarning('Non-critical issue detected.');
    }
    
  • Extensibility: Extend or override templates via config/flasher.php (templates) or programmatically:
    Flasher::addTemplate('custom', function ($message) {
        return "<div class='alert alert-{$message->getType()}'>{$message->getMessage()}</div>";
    });
    
  • Low adoption warning: With only 63 stars and no active repo (unknown), verify maintenance status—check for recent commits, PRs, or forks before committing long-term.
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.
davejamesmiller/laravel-breadcrumbs
artisanry/parsedown
christhompsontldr/phpsdk
enqueue/dsn
bunny/bunny
enqueue/test
enqueue/null
enqueue/amqp-tools
bower-asset/punycode
bower-asset/inputmask
bower-asset/jquery
bower-asset/yii2-pjax
laravel/nova
spatie/laravel-mailcoach
spatie/laravel-superseeder
laravel/liferaft
nst/json-test-suite
danielmiessler/sec-lists
jackalope/jackalope-transport
twbs/bootstrap4