Yii2:如何将Pagination-Per-Page更改为RESTful Web Service API?

Jan*_*nka 19 rest pagination yii2

我正在使用AngularJS为前端开发应用程序,为后端使用Yii2.

前端需要全面的所有用户.

在Yii2的文档中,http://www.yiiframework.com/doc-2.0/guide-rest-quick-start.html 我可以读取按X-Pagination-Per-Page划分的结果:20

如何设置X-Pagination-Per-Page:ALL?

Wil*_*wan 15

如果您使用yii\rest\ActiveController控制器中的父级,则需要覆盖控制器中的操作索引.

这是我的代码

class StnkController extends ActiveController{
    public $modelClass = "common\models\Stnk";

    public function actions(){
        $actions = parent::actions();
        unset($actions['index']);
        return $actions;
    }

    public function actionIndex(){
        $activeData = new ActiveDataProvider([
            'query' => Stnk::find(),
            'pagination' => [
                'defaultPageSize' => 2,
            ],
        ]);
        return $activeData;
    }
}
Run Code Online (Sandbox Code Playgroud)


aro*_*hev 14

从官方文档中查看示例.

您可以通过更改以下pageSize参数来设置任何必要的数字pagination:

return new ActiveDataProvider([
    'pagination' => [
        'pageSize' => 10,
    ],
]);
Run Code Online (Sandbox Code Playgroud)

或者您可以pagination完全禁用并显示所有可用数据,如下所示:

return new ActiveDataProvider([
    'pagination' => false,
]);
Run Code Online (Sandbox Code Playgroud)

我不认为这是一种正确的传递方式,ALL因为它直接来自pageSize(数字).

如果禁用此标头,则不会添加.


Emi*_*alı 8

这里说如果将pageSize设置为小于1,则可以获取所有记录.

pageSize必须在pageSizeLimit的范围内.pageSizeLimit有一个默认值[ 1,50 ],所以除非你覆盖它,否则它不能小于1.

return new ActiveDataProvider([
    'pagination' => [
        'pageSizeLimit' => [0, 50],
    ],
]);
Run Code Online (Sandbox Code Playgroud)

现在,您可以将pageSize值设置为0以获取所有记录.

例;

HTTP://本地主机/用户的单页= 0