0
votes

Comment filtrer une table de grilleview en Yii2?

J'ai deux tables de grilleview actuellement, on affiche toutes les données et l'autre, je veux qu'il ne affiche que des données sur lesquelles ID = 2. Est-il possible de filtrer une seule table sans affecter l'autre? Je sais que je peux filtrer à partir du modèle de recherche mais qui affectera toutes les tables et je veux qu'il n'affecte qu'un.

puis-je avoir deux dataProvider?

Ceci est le code de mon modèle de recherche: < / p> xxx


2 commentaires

Oui, vous pouvez avoir deux fournisseurs de données et c'est la voie à suivre.


@Bizley ok merci je vais essayer de trouver comment faire ça alors


3 Réponses :


0
votes

Vous devrez manipuler le DataProvider dans le contrôleur.

...
if(count(Yii::$app->request->queryParams) == 0){
    $dataProvider->query->andWhere(['=','id',2]);
}


2 commentaires

Mais cela affecte tous. Je veux qu'il n'affecte qu'une seule table


De toute évidence, vous devrez créer 2 fichiers dataproviders. Un pour chaque table.



0
votes

Vous devez utiliser deux SearchModels, une pour chaque grilleView et bien sûr deux fournisseurs de données.

Aussi vous devez modifier l'attribut form-nom de l'une des pièces de recherche pour éviter le filtrage pour affecter les deux grilles.

et le contrôleur, lorsque vous passez des paramètres à la méthode de recherche () de la recherche modifiée, transmettez les paramètres du nouveau nom que vous avez affecté à FormName dans cette rechercheModel.


0 commentaires

1
votes

Vous avez besoin de deux dataproviders, comme celui-ci:

$searchModelOne = new JobPlanningSearch();        
$dataProviderOne = $searchModelOne->search(Yii::$app->request->queryParams);
$dataProviderOne->pagination->pageParam = 'dp-one-page'; //set page param for first dataprovider
$searchModelTwo = new JobPlanningSearch();   
searchModelTwo->id = 2;     // set id = 2 in second dataprovider
$dataProviderTwo = $searchModelTwo->search(Yii::$app->request->queryParams);
$dataProviderTwo->pagination->pageParam = 'dp-two-page'; //set page param for second dataprovider


0 commentaires