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'] ]);
$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
Vous devez vous connecter pour publier un commentaire.
Vous devez ajouter
pagination
option dansActiveDataProvider
à la recherche de modèle et a également miswhere
ouandWhere
à$query
condition.voir ce stackoverflow.com/questions/23336269/...
OriginalL'auteur
OriginalL'auteur Alexei