Je développe une application utilisant AngularJS pour le frontend et Yii2 pour le backend.
Le frontend nécessite une gamme complète de tous les utilisateurs.
Dans la documentation de Yii2, http://www.yiiframework.com/doc-2.0/guide-rest-quick-start.html Je peux lire le résultat divisé par X-Pagination- Par page: 20
Comment définir X-Pagination-Per-Page: ALL ??
Voir this exemple tiré de la documentation officielle.
Vous pouvez définir tout nombre nécessaire en modifiant le paramètre pageSize
de pagination
:
return new ActiveDataProvider([
'pagination' => [
'pageSize' => 10,
],
]);
Ou vous pouvez désactiver pagination
complètement et afficher toutes les données disponibles comme ceci:
return new ActiveDataProvider([
'pagination' => false,
]);
Je ne pense pas que ce soit une bonne façon de passer ALL
car elle provient directement de pageSize
(qui est un nombre).
En cas de désactivation, cet en-tête ne sera pas ajouté.
Si vous utilisez yii\rest\ActiveController
en tant que parent de votre contrôleur, vous devez remplacer l'index d'action dans votre contrôleur.
C'est mon code
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;
}
}
Ici indique que vous pouvez obtenir tous les enregistrements si vous définissez pageSize inférieur à 1.
Mais pageSize doit être dans la plage de pageSizeLimit. pageSizeLimit a une valeur par défaut [1, 50], il ne peut donc pas être inférieur à 1 sauf si vous la remplacez.
return new ActiveDataProvider([
'pagination' => [
'pageSizeLimit' => [0, 50],
],
]);
Vous pouvez maintenant définir la valeur de pageSize sur 0 pour obtenir tous les enregistrements.
Exemple;
Dans yii/rest/IndexAction.php change
return new ActiveDataProvider([
'query' => $modelClass::find(),
]);
à
return new ActiveDataProvider([
'query' => $modelClass::find(),
'pagination' => false,
]);
C'est tout.
code pour les éléments de données sur la page d'index par page dans le framework yii2
insérer du code dans le fichier models\ModelnameSearch.php dans l'instruction $ query
public $pageSize=10;
$dataProvider = new ActiveDataProvider([
'query' => $query,
'pagination' => ['pageSize' => $pageSize,],
]);