bcrowe / cakephp-api-pagination
CakePHP 4 插件,将分页信息注入 API 响应。
Requires
- php: >=7.2
- cakephp/cakephp: ^4.2
Requires (Dev)
- cakephp/cakephp-codesniffer: ^4.7
- phpunit/phpunit: ^8.5.23
- scrutinizer/ocular: 1.7
README
这是一个简单的 CakePHP 4.2+ 组件,它将 CakePHP 的分页信息注入到序列化的 JsonView 和 XmlView 响应中。
有关支持 4.2
之前版本的 CakePHP 的信息,请参阅此插件的 1.x
和 2.x
版本和分支。
安装
通过 Composer
$ composer require bcrowe/cakephp-api-pagination
通过在项目中的 src/Application.php
文件的 bootsrap
方法中添加 $this->addPlugin('BryanCrowe/ApiPagination');
来加载插件
public function bootstrap(): void { parent::bootstrap(); // ... bootstrap code ... // load more plugins here $this->addPlugin('BryanCrowe/ApiPagination'); }
用法
请确保您的应用程序已配置为使用数据视图;请参阅 CakePHP 文档中的启用应用程序中的数据视图部分。
然后,加载 ApiPaginationComponent
$this->loadComponent('BryanCrowe/ApiPagination.ApiPagination');
然后,像这样设置您的分页视图变量
$this->set('articles', $this->paginate($this->Articles)); $this->viewBuilder()->setOption('serialize', ['articles']);
注意:您的 serialize
选项必须是一个数组,例如 ['articles']
,这样您的分页信息就可以在它自己的分页键下设置。
您的 JsonView 和 XmlView 响应现在将包含分页信息,看起来像这样
{ "articles": ["...", "...", "..."], "pagination": { "finder": "all", "page": 1, "current": 20, "count": 5000, "perPage": 20, "prevPage": false, "nextPage": true, "pageCount": 250, "sort": null, "direction": false, "limit": null, "sortDefault": false, "directionDefault": false } }
配置分页输出
ApiPagination 有四个配置键:key
、aliases
、visible
和 model
。
-
key
允许您更改分页键的名称。 -
aliases
允许您更改分页详细信息键的名称。 -
visible
允许您设置将在响应中公开哪些分页键。 注意:在设置键的可见性时,如果已提供别名,请确保使用别名。 -
model
允许您设置分页应用到的模型名称,如果控制器不遵循 CakePHP 规范,例如ArticlesIndexController
。默认情况下,模型是控制器名称,例如Articles
对于ArticlesController
。
使用所有这些配置键的示例
$this->loadComponent('BryanCrowe/ApiPagination.ApiPagination', [ 'key' => 'paging', 'aliases' => [ 'page' => 'currentPage', 'current' => 'resultCount' ], 'visible' => [ 'currentPage', 'resultCount', 'prevPage', 'nextPage' ], 'model' => 'Articles', ]);
此配置将产生以下结果
{ "articles": ["...", "...", "..."], "paging": { "prevPage": false, "nextPage": true, "currentPage": 1, "resultCount": 20 } }
变更日志
请参阅 CHANGELOG 了解最近更改的信息。
测试
$ composer test
贡献
有关详细信息,请参阅 CONTRIBUTING 和 CONDUCT。
安全性
如果您发现任何安全相关的问题,请通过电子邮件[email protected]联系,而不是使用问题跟踪器。
鸣谢
许可
MIT 许可证(MIT)。有关更多信息,请参阅 许可文件。