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