Yii2: Как изменить Pagination-Per-Page в API RESTful Web Service?
Я разрабатываю приложение, использующее 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??
Ответы
Ответ 1
Если вы используете 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
См. Этот пример из официальной документации.
Вы можете установить любое необходимое число, изменив параметр pageSize
для pagination
на pagination
:
return new ActiveDataProvider([
'pagination' => [
'pageSize' => 10,
],
]);
Или вы можете полностью отключить pagination
и показать все доступные данные следующим образом:
return new ActiveDataProvider([
'pagination' => false,
]);
Я не думаю, что это правильный способ передать ALL
потому что он принимается непосредственно из pageSize
(который является числом).
В случае отключения этот заголовок не будет добавлен.
Ответ 3
Здесь говорится, что вы можете получить все записи, если вы установите pageSize меньше 1.
Но pageSize должен находиться в диапазоне pageSizeLimit. pageSizeLimit имеет значение по умолчанию [1, 50], поэтому оно не может быть меньше 1, если вы не переопределите его.
return new ActiveDataProvider([
'pagination' => [
'pageSizeLimit' => [0, 50],
],
]);
Теперь вы можете установить значение pageSize равным 0, чтобы получить все записи.
Пример;
HTTP://локальный/пользователей на страницу = 0
Ответ 4
В изменении yii/rest/IndexAction.php
return new ActiveDataProvider([
'query' => $modelClass::find(),
]);
в
return new ActiveDataProvider([
'query' => $modelClass::find(),
'pagination' => false,
]);
Все это.