netglue/expressive-prg

该软件包已被废弃且不再维护。未建议替代软件包。

中间件,用于在 Zend Expressive 中实现 Post/Redirect/Get 模式

1.0.1 2017-03-21 16:30 UTC

This package is auto-updated.

Last update: 2021-09-02 12:05:18 UTC


README

简介

这是一个简单的中间件,可以帮助您在 Zend Expressive 应用程序中实现 PRG 模式。

基于原始的 Zend Framework PRG 控制器插件

使用 Zend\Session 但不配置会话本身。我认为这是会话管理的一个合理选择。如果您知道一个标准的会话库进行类型提示,请告诉我,但据我所知,没有这样的库...

安装

$ composer require netglue/expressive-prg

使用

首先,您需要将中间件注册到 DI 容器中,如下所示

// use NetglueExpressive\Middleware\PostRedirectGet;

'dependencies' => [
    'invokables' => [
        PostRedirectGet::class => PostRedirectGet::class
    ],
],

当您想要执行 PRG 操作时,将中间件添加到您的路由中,如下所示

'routes' => [
    'some-form' => [
        'name' => 'some-form',
        'path' => '/somewhere',
        'allowed_methods' => ['GET', 'POST'],
        'middleware' => [
            PostRedirectGet::class
            // Your middleware to post process, render templates etc…
        ],
    ],
],

在您的操作中,请求将有一个名为 prg 的属性,设置为 false 或提交的数据(如果有),例如

$post = $request->getAttribute('prg');
if (false === $post) {
    // No POST has occurred, probably render the form template
}

// Otherwise, process POST data, validate, store, whatever…

请求属性名称在 PostRedirectGet::KEY 中定义为常量

如果请求既不是 GET 也不是 POST 请求,并且您的路由允许其他方法(如 PUT、DELETE 等),则该属性可能为 null

测试

$ cd vendor/netglue/expressive-prg
$ composer install
$ phpunit

关于

Netglue 在英格兰德文郡制作基于网络的物品。我们希望这对您有用,无论哪种方式我们都非常感谢:)