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? P>
Ceci est le code de mon modèle de recherche: < / p>
3 Réponses :
Vous devrez manipuler le DataProvider dans le contrôleur.
... if(count(Yii::$app->request->queryParams) == 0){ $dataProvider->query->andWhere(['=','id',2]); }
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.
Vous devez utiliser deux SearchModels, une pour chaque grilleView et bien sûr deux fournisseurs de données. P>
Aussi vous devez modifier l'attribut et le contrôleur, lorsque vous passez des paramètres à la méthode de recherche form-nom code> de l'une des pièces de recherche pour éviter le filtrage pour affecter les deux grilles. P>
() CODE> de la recherche modifiée, transmettez les paramètres du nouveau nom que vous avez affecté à FormName dans cette rechercheModel. p>
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
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