firehead996 / flash-messages
Flash message service provider
0.5.0
2022-06-16 16:59 UTC
Requires
- php: ^8.1
Requires (Dev)
- phpunit/phpunit: ^9.5
This package is auto-updated.
Last update: 2025-06-17 00:22:57 UTC
README
This repository contains a Flash messages service provider. This enables you to define transient messages that persist only from the current request to the next request.
Install
Via Composer
$ composer require firehead996/flash-messages
Usage
Slim 4
This example assumes that you have php-di/php-di
installed.
<?php use DI\ContainerBuilder; use Slim\Factory\AppFactory; use Slim\Routing\RouteContext; use Firehead996\Flash\MessagesInterface; use Firehead996\Flash\Messages; require_once __DIR__ . '/../vendor/autoload.php'; $containerBuilder = new ContainerBuilder(); // Add container definition for the flash component $containerBuilder->addDefinitions( [ MessagesInterface::class => function () { $storage = []; return new Messages($storage); } ] ); AppFactory::setContainer($containerBuilder->build()); $app = AppFactory::create(); // Add session start middleware $app->add(function ($request, $next) { // Start PHP session if (session_status() !== PHP_SESSION_ACTIVE) { session_start(); } // Change flash message storage $this->get(MessagesInterface::class)->__construct($_SESSION); return $next->handle($request); }); $app->addErrorMiddleware(true, true, true); // Add routes $app->get('/', function ($request, $response) { // Set flash message for next request $this->get(MessagesInterface::class)->addMessage('Test', 'This is a message'); // Redirect $url = RouteContext::fromRequest($request)->getRouteParser()->urlFor('bar'); return $response->withStatus(302)->withHeader('Location', $url); }); $app->get('/bar', function ($request, $response) { $flash = $this->get(MessagesInterface::class); // Get flash messages from previous request $messages = $flash->getMessages(); print_r($messages); // Get the first message from a specific key $test = $flash->getFirstMessage('Test'); print_r($test); return $response; })->setName('bar'); $app->run();
Please note that a message could be a string, object or array. Please check what your storage can handle.
Testing
$ phpunit
License
The MIT License (MIT). Please see License File for more information.