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

时间:2014-12-11 11:29:22

标签: 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 ??

5 个答案:

答案 0 :(得分:14)

请参阅官方文档中的this示例。

您可以通过更改pageSize

pagination参数来设置任何必要的数字
return new ActiveDataProvider([
    'pagination' => [
        'pageSize' => 10,
    ],
]);

或者您可以完全停用pagination并显示所有可用数据:

return new ActiveDataProvider([
    'pagination' => false,
]);

我认为这不是传递ALL的正确方法,因为它直接取自pageSize(数字)。

如果禁用此标题,则不会添加。

答案 1 :(得分:14)

如果您使用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;
    }
}

答案 2 :(得分:8)

Here表示如果将 pageSize 设置为小于1,则可以获取所有记录。

pageSize 必须在 pageSizeLimit 的范围内。 pageSizeLimit 具有默认值[1,50],因此除非您覆盖它,否则它不能小于1.

return new ActiveDataProvider([
    'pagination' => [
        'pageSizeLimit' => [0, 50],
    ],
]);

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

实施例

  

http://localhost/users?per-page=0

答案 3 :(得分:1)

在yii / rest / IndexAction.php中更改

return new ActiveDataProvider([
        'query' => $modelClass::find(),
    ]);

return new ActiveDataProvider([
        'query' => $modelClass::find(),
        'pagination' => false,
    ]);

就是这样。

答案 4 :(得分:0)

在yii2框架中每页索引页上数据项的代码

将代码插入models \ ModelnameSearch.php文件到$ query语句中

public $pageSize=10;

$dataProvider = new ActiveDataProvider([
        'query' => $query,
        'pagination' =>  ['pageSize' => $pageSize,],       
    ]);