我正在使用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 ??
答案 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 以获取所有记录。
实施例
答案 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,],
]);