slim/flash

Slim 框架 Flash 消息服务提供者

0.4.0 2017-10-22 10:35 UTC

This package is auto-updated.

Last update: 2024-09-05 23:15:54 UTC


README

Build Status

此存储库包含一个 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)。有关更多信息,请参阅 许可证文件