web-dev-qa-db-fra.com

Yii2: Comment changer la pagination par page en API de service Web RESTful?

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 ??

16
Janka

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é.

13
arogachev

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;
    }
}
13
Wilianto Indrawan

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;

http: // localhost/users? per-page = 0

8
Emirhan Marlalı

Dans yii/rest/IndexAction.php change

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

à

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

C'est tout.

1
Jozsef Bicsak

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,],       
    ]);
0
Anil Ram Ahir