Yii2:如何将每页分页更改为RESTfulWeb服务API?

Yii2:如何将每页分页更改为RESTfulWeb服务API?,rest,pagination,yii2,Rest,Pagination,Yii2,我正在开发一个应用程序,使用AngularJS作为前端和 后端的Yii2 前端需要一个包含所有用户的综合阵列 在Yii2的文件中, 我可以读取结果除以每页X分页:20 我怎么设置 X分页每页:全部 ??参见官方文件中的示例 您可以通过更改分页的页面大小参数来设置任何必要的数字: return new ActiveDataProvider([ 'pagination' => [ 'pageSize' => 10, ], ]); 或者您可以完全禁用分页,

我正在开发一个应用程序,使用AngularJS作为前端和 后端的Yii2

前端需要一个包含所有用户的综合阵列

在Yii2的文件中, 我可以读取结果除以每页X分页:20

我怎么设置 X分页每页:全部 ??参见官方文件中的示例

您可以通过更改
分页
页面大小
参数来设置任何必要的数字:

return new ActiveDataProvider([
    'pagination' => [
        'pageSize' => 10,
    ],
]);
或者您可以完全禁用
分页
,并显示所有可用数据,如下所示:

return new ActiveDataProvider([
    'pagination' => false,
]);
我认为这不是传递
ALL
的正确方法,因为它直接取自
pageSize
(即数字)


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

如果从控制器中将
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;
    }
}
表示如果将页面大小设置为小于1,则可以获取所有记录

但是pageSize必须在pageSizeLimit范围内pageSizeLimit有一个默认值[1,50],因此它不能小于1,除非覆盖它

返回新的ActiveDataProvider([
“分页”=>[
“pageSizeLimit”=>[0,50],
],
]);
现在,您可以将pageSize值设置为0,以获取所有记录

榜样


在yii/rest/IndexAction.php中更改

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


仅此而已。

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

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

public $pageSize=10;

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

这是一个老问题,但在我看来,您不应该让后端在一个查询中返回所有用户,这可能会随着时间的推移变得非常大。相反,您的前端应该迭代所有页面(使用链接头),直到到达末尾并连接所有结果。您绝对不应该在框架内更改
IndexAction.php
。假设要更新依赖项,则必须重新进行更改。或者使用其他答案中的一个来实现,或者从上面的类中创建自己的操作作为子类,并在那里进行更改。
public $pageSize=10;

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