Notification package for Laravel
Package is looking for maintainers Please contact me if interested.
A simple notification management package for Laravel4.
Just place require new package for your laravel installation via composer.json
"edvinaskrucas/notification": "5.*"
Then hit composer update
Laravel Version | Package version |
---|---|
= 5.4 | 5.2.* |
>= 5.1 | 5.1.* |
>= 5.0, < 5.1 | 5.0.* |
>= 4, < 5 | >= 2, <= 3 |
Add following lines to app/config/app.php
ServiceProvider array
\Krucas\Notification\NotificationServiceProvider::class,
Kernel middleware array (must be placed after 'Illuminate\Session\Middleware\StartSession' middleware
)
\Krucas\Notification\Middleware\NotificationMiddleware::class,
Now you are able to use it with Laravel4.
If you want to edit default config file, just publish it to your app folder.
php artisan vendor:publish --provider="\Krucas\Notification\NotificationServiceProvider" --tag="config"
Adding message to default container.
\Krucas\Notification\Facades\Notification::success('Success message');
\Krucas\Notification\Facades\Notification::error('Error message');
\Krucas\Notification\Facades\Notification::info('Info message');
\Krucas\Notification\Facades\Notification::warning('Warning message');
Containers allows you to set up different containers for different placeholders.
You can pass closure to modify containers, simply use this syntax showed below
\Krucas\Notification\Facades\Notification::container('myContainer', function($container)
{
$container->info('Test info message');
$container->error('Error');
});
Also you can access container like this
\Krucas\Notification\Facades\Notification::container('myContainer')->info('Info message');
Method chaining
\Krucas\Notification\Facades\Notification::container('myContainer')->info('Info message')->error('Error message');
If you want to use default container just use null
as container name. Name will be taken from config file.
\Krucas\Notification\Facades\Notification::container()->info('Info message');
Library supports not only flash messages, if you want to show notifications in same request just use
\Krucas\Notification\Facades\Notification::successInstant('Instant success message');
Want a custom format for single message? No problem
\Krucas\Notification\Facades\Notification::success('Success message', 'Custom format :message');
Also you can still pass second param (format), to format messages, but you can format individual messages as shown above.
You can add messages as objects
\Krucas\Notification\Facades\Notification::success(
\Krucas\Notification\Facades\Notification::message('Sample text')
);
When adding message as object you can add additional params to message
\Krucas\Notification\Facades\Notification::success(
\Krucas\Notification\Facades\Notification::message('Sample text')->format(':message')
);
You can add messages by using a closure
\Krucas\Notification\Facades\Notification::success(function (Message $message) {
$message->setMessage('Sample text')->setPosition(1);
});
You can access and show just first notification in container
{!! \Krucas\Notification\Facades\Notification::container('myContainer')->get('success')->first() !!}
Accessing first notification from all types
{!! \Krucas\Notification\Facades\Notification::container('myContainer')->all()->first() !!}
To display all notifications in a default container you need to add just one line to your view file
{!! \Krucas\Notification\Facades\Notification::showAll() !!}
When using showAll()
you may want to group your messages by type, it can be done like this
{!! \Krucas\Notification\Facades\Notification::group('info', 'success', 'error', 'warning')->showAll() !!}
This will group all your messages in group and output it, also you can use just one, two or three groups.
Manipulating group output on the fly
\Krucas\Notification\Facades\Notification::addToGrouping('success')->removeFromGrouping('error');
Display notifications by type in default container, you can pass custom format
{!! \Krucas\Notification\Facades\Notification::showError() !!}
{!! \Krucas\Notification\Facades\Notification::showInfo() !!}
{!! \Krucas\Notification\Facades\Notification::showWarning() !!}
{!! \Krucas\Notification\Facades\Notification::showSuccess(':message') !!}
Displaying notifications in a specific container with custom format.
{!! \Krucas\Notification\Facades\Notification::container('myContainer')->showInfo(':message') !!}
Or you can just use blade extension
@notification() // will render default container
@notification('custom') // will render 'custom' container
There is ability to add message to certain position.
// This will add message at 5th position
\Krucas\Notification\Facades\Notification::info(Notification::message('info')->position(5));
\Krucas\Notification\Facades\Notification::info(Notification::message('info2')->position(1);
You can clear all messages or by type.
\Krucas\Notification\Facades\Notification::clearError();
\Krucas\Notification\Facades\Notification::clearWarning();
\Krucas\Notification\Facades\Notification::clearSuccess();
\Krucas\Notification\Facades\Notification::clearInfo();
\Krucas\Notification\Facades\Notification::clearAll();
Want to add message in a view file and display it? Its very simple:
{!! \Krucas\Notification\Facades\Notification::container('myInstant')
->infoInstant('Instant message added in a view and displayed!') !!}
You can also add multiple messages
{!! \Krucas\Notification\Facades\Notification::container('myInstant')
->infoInstant('Instant message added in a view and displayed!')
->errorInstant('Error...') !!}