slim / flash
Slim 框架 Flash 消息服务提供者
0.4.0
2017-10-22 10:35 UTC
Requires
- php: >=5.5.0
Requires (Dev)
- phpunit/phpunit: ^4.0
This package is auto-updated.
Last update: 2024-09-05 23:15:54 UTC
README
此存储库包含一个 Slim 框架 Flash 消息服务提供者。这使您能够定义只从当前请求持续到下一个请求的临时消息。
安装
通过 Composer
$ composer require slim/flash
需要 Slim 3.0.0 或更高版本。
用法
Slim 4
此示例假设您已安装 php-di/php-di
。
<?php use DI\ContainerBuilder; use Slim\Factory\AppFactory; use Slim\Flash\Messages; use Slim\Routing\RouteContext; require_once __DIR__ . '/../vendor/autoload.php'; $containerBuilder = new ContainerBuilder(); // Add container definition for the flash component $containerBuilder->addDefinitions( [ 'flash' => 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('flash')->__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('flash')->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('flash'); // 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();
Slim 3
// Start PHP session session_start(); $app = new \Slim\App(); // Fetch DI Container $container = $app->getContainer(); // Register provider $container['flash'] = function () { return new \Slim\Flash\Messages(); }; $app->get('/foo', function ($req, $res, $args) { // Set flash message for next request $this->flash->addMessage('Test', 'This is a message'); // Redirect return $res->withStatus(302)->withHeader('Location', '/bar'); }); $app->get('/bar', function ($req, $res, $args) { // Get flash messages from previous request $messages = $this->flash->getMessages(); print_r($messages); // Get the first message from a specific key $test = $this->flash->getFirstMessage('Test'); print_r($test); }); $app->run();
请注意,消息可以是字符串、对象或数组。请检查您的存储能够处理的内容。
与 Twig-View 一起使用
如果您使用 Twig-View,那么 slim-twig-flash 可能是一个有用的集成包。
测试
$ phpunit
贡献
有关详细信息,请参阅 CONTRIBUTING。
安全性
如果您发现任何与安全相关的问题,请通过电子邮件 [email protected] 而不是使用问题跟踪器。
鸣谢
许可证
MIT 许可证 (MIT)。有关更多信息,请参阅 许可证文件。