2015-11-19 4 views
2

Actuellement j'utilise le yii2 array dataprovider pour lister les données de repos api. Nous avons plus de 10k enregistrements. Chaque appel d'api de repos peut obtenir seulement maximum 100 records, Si nous voulons plus je dois donner la limite et le décalage pour cet appel d'api de repos.Fournisseur de données Yii2 pour l'api de repos

Existe-t-il un fournisseur de données api de repos spécifique dans yii2? Sinon, comment puis-je mettre en œuvre la pagination pour cette API de repos?

+0

Vous pouvez utiliser 'ActiveDataProvider' ou' SqlDataProvider' ... –

+0

Comment puis-je passer l'appel api reste dans ActiveDataProvier question param .. S'il vous plaît est-il un échantillon – sas

Répondre

1

dataprovider, dans Yii2 a un support pour la pagination. Supposons, votre service reçoit est params avec le code suivant:

$params = Yii::$app->getRequest()->post(); 

Vous pouvez inclure le paramètre page dans la demande, puis faire un petit hack (: P), comme:

if (isset($params ['page'])) { 
    $_GET['page'] = (int) $params ['page']; 
    if ($_GET['page'] < 1) { 
     $_GET['page'] = 1; 
    } 
} 

Une fois que vous Pour ce faire, votre dataprovider attribue automatiquement la valeur $_GET à son ensemble de résultats. Un exemple de dataprovider:

$dataProvider = new ActiveDataProvider([ 
    'query' => Users::find(), 
    'pagination' => array('pageSize' => 10), 
     ]); 

Ou, dans votre cas:

$dataProvider = new ArrayDataProvider([ 
    'allModels' => $query->from('post')->all(), 
    'sort' => [ 
     'attributes' => ['id', 'username', 'email'], 
    ], 
    'pagination' => [ 
     'pageSize' => 10, 
    ], 
     ]); 

Pour obtenir les modèles, vous pouvez utiliser la méthode getModels() de dataprovider comme suit:

$models = $dataProvider->getModels(); 

Laissez-moi savoir si cela résout votre problème.