netglue / expressive-prg
该软件包已被废弃且不再维护。未建议替代软件包。
中间件,用于在 Zend Expressive 中实现 Post/Redirect/Get 模式
1.0.1
2017-03-21 16:30 UTC
Requires
- zendframework/zend-expressive: ^1.0 || ^2.0
- zendframework/zend-session: ^2.7
Requires (Dev)
- phpunit/phpunit: ^5.5
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