Yii2:如何更改分页单页进RESTful Web服务API?

问题描述 投票:18回答:5

我正在开发使用针对前端和Yii2的后端AngularJS的应用程序。

前端要求所有用户的全面阵列。

在Yii2的文档,http://www.yiiframework.com/doc-2.0/guide-rest-quick-start.html我可以读取结果通过X-分页每页分:20

如何设置X-分页每页:ALL?

rest pagination yii2
5个回答
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;
    }
}

14
投票

请参阅从官方文档this例子。

您可以通过改变pageSize pagination的参数设置任何所需数量:

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

或者你可以完全禁用pagination并显示这样的全部信息:

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

我不认为这是因为它直接取自ALL通过pageSize(这是数)正道。

在禁用此报头的情况下也不会被加入。


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


0
投票

在警予/ REST / IndexAction.php变化

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

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

就这样。


0
投票

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

代码插入到模型\ ModelnameSearch.php文件到$查询语句

public $pageSize=10;

$dataProvider = new ActiveDataProvider([
        'query' => $query,
        'pagination' =>  ['pageSize' => $pageSize,],       
    ]);
© www.soinside.com 2019 - 2024. All rights reserved.