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。
安全性
如果您发现任何安全相关的问题,请通过电子邮件bryan@bryan-crowe.com联系,而不是使用问题跟踪器。
鸣谢
许可
MIT 许可证(MIT)。有关更多信息,请参阅 许可文件。