La pagination et Filtre en Yii2 Gridview

J'ai utilisé le générateur de CRUD dans Yii2 et il a généré le code suivant pour mon actionIndex contrôleur...

public function actionIndex()
{
    $searchModel = new LeadSearch();
    $dataProvider = $searchModel->search(Yii::$app->request->queryParams);

    return $this->render('index', [
        'searchModel' => $searchModel,
        'dataProvider' => $dataProvider,
    ]);
}

Je suis en train de faire deux choses à ce code par défaut:

1) Définir la taille de la page, de sorte que le contrôle gridview affichage ne montre que 10 lignes

2) Modifier la $searchModel tel qu'il retourne uniquement les enregistrements pour lesquels le statut de la colonne dans le tableau correspond à certaines valeurs multiples (Opérateur)... ou mieux encore, tous les enregistrements qui ne correspondent pas à une valeur donnée.

Pour le #1, je vois de nombreux exemples pour définir le 'pagination' tout en utilisant ActiveDataProvider, mais aucun pour search(). Ce code ne fonctionne pas pour moi...

$dataProvider = $searchModel->search(
    Yii::$app->request->queryParams, ['pagination' => [ 'pageSize' => 10 ]]
);

Pour le #2, je sais que nous pouvons le filtre en déclarant la nouvelle LeadSearch objet...

$searchModel = new LeadSearch([ 'status' => 'open' ]);

...mais quelque chose comme cela ne fonctionne pas...

$searchModel = new LeadSearch([ 'status' => ['open', 'pending'] ]);
Votre première question, peut-être peut-être la réponse ici Répondre et je suppose que vous pouvez ajouter ce filtre de requête dans la $query objet à l'intérieur de la search_model. Ajouter un peu de $query->andWhere([ 'status' => ['open', 'pending'] ])

OriginalL'auteur Shahid Thaika | 2015-09-09