coderello/laraflash

Advanced flash messages for Laravel.

6.0.0 2023-03-10 19:26 UTC

This package is auto-updated.

Last update: 2024-04-10 21:38:19 UTC


README

Laraflash

Laraflash provides a handy way to work with the flash messages.

Latest Version Software License StyleCI Quality Score Coverage Status

Installation

You can install this package via composer using this command:

composer require coderello/laraflash 

After that you need to register the \Coderello\Laraflash\Middleware\HandleLaraflash::class middleware after the \Illuminate\Session\Middleware\StartSession::class one in the app\Http\Kernel.php

You can publish the config file with:

php artisan vendor:publish --tag="laraflash-config"

Adding flash messages

There are many syntax variations for adding flash messages, so you can choose the one you like the most.

Let's take a look at some of them.

use Coderello\Laraflash\Facades\Laraflash;

Laraflash::message()->content('Some content')->title('Some title')->type('success');

message() method creates and returns fresh FlashMessage instance which can be modified by chaining methods (all methods could be found in the FlashMessage methods section).

laraflash()->message()->content('Some content')->title('Some title')->type('success');

Laraflash facade can be replaced with the laraflash() helper as you could saw in the example above.

laraflash()->message('Some content', 'Some title')->success();

message() method accepts up to five arguments: $content, $title, $type, $delay, $hops.

laraflash('Some content', 'Some title')->success();

Arguments mentioned in the previous example can be passed directly to the laraflash() helper.

Rendering flash messages

Ready flash messages could be rendered using the render() method of the Laraflash instance.

laraflash()->render();

All methods of the Laraflash instance (which could be obtained by calling laraflash() helper without arguments being passed) could be found in the Laraflash methods section.

Output HTML will be generated using skin, specified in the laraflash.skin config. All available skins are listed in the config file.

<div class="alert alert-danger" role="alert">
   Danger message.
</div><br><div class="alert alert-info" role="alert">
   Info message.
</div>

Default separator between the messages is the <br>, which is specified in the laraflash.separator config. Feel free to change it if you need.

Example of messages rendered as HTML:

Example

Obtaining flash messages as an array

Flash messages can be obtained as an array using the toArray() method.

laraflash()->toArray();

Here is the result:

[
  [
    "title" => null,
    "content" => "Instant message.",
    "type" => "danger",
    "hops" => 1,
    "delay" => 0,
  ],
]

You can use array representation of flash messages for your API.

Laraflash methods

message(?string $content = null, ?string $title = null, ?string $type = null, ?int $delay = null, ?int $hops = null): FlashMessage

Creates and returns fresh FlashMessage instance.

render()

Renders ready flash messages as HTML.

keep(): self

Adds one more hop to each flash message.

clear(): self

Deletes all flash messages.

all(): Collection

Returns the Collection instance containing all flash messages.

ready(): Collection

Returns the Collection instance containing ready flash messages.

touch(): self

Touches all flash messages (decrements amount of hops and delay, deletes expired messages).

toArray()

Returns an array representation of ready flash messages.

toJson()

Returns JSON representation of ready flash messages.

FlashMessage methods

content(?string $content): self

Sets the content of the flash message.

title(?string $title): self

Sets the title of the flash message.

type(?string $type): self

Sets the type of the flash message.

danger(): self

Sets the danger type for the flash message.

warning(): self

Sets the warning type for the flash message.

info(): self

Sets the info type for the flash message.

success(): self

Sets the success type for the flash message.

hops(int $hops): self

Sets the hops amount of the message (the number of requests in which the message will be present).

Default: 1

delay(int $delay): self

Sets the delay of the message (the number of requests in which the message will be waiting to receive the ready state).

Default: 1

now(): self

Shortcut for ->delay(0)

keep(): self

Increments the amount of hops.

attribute(string $key, $value = null): self

Sets the custom attribute which will be present in the array representation of the message and could be obtained using the get() method.

get(string $key)

Returns the value of the attribute.

toArray()

Returns an array representation of the message.

toJson()

Returns JSON representation of the message.

Testing

You can run the tests with:

composer test

Changelog

Please see CHANGELOG for more information what has changed recently.

Contributing

Please see CONTRIBUTING for details.

📖 License

Larflash is open-sourced software licensed under the MIT license.