À l'aide de Yii2 avec le tableau de données et d'un Gridview avec tri et de filtre
J'ai un tableau
$resultData = [
array("id"=>1,"name"=>"Cyrus","email"=>"[email protected]"),
array("id"=>2,"name"=>"Justin","email"=>"[email protected]"),
array("id"=>3,"name"=>"Mason","email"=>"[email protected]"),
array("id"=>4,"name"=>"Fulton","email"=>"[email protected]"),
array("id"=>5,"name"=>"Neville","email"=>"[email protected]"),
array("id"=>6,"name"=>"Jasper","email"=>"[email protected]"),
array("id"=>7,"name"=>"Neville","email"=>"[email protected]"),
array("id"=>8,"name"=>"Neville","email"=>"[email protected]"),
array("id"=>9,"name"=>"Ronan","email"=>"[email protected]"),
array("id"=>10,"name"=>"Raphael","email"=>"[email protected]"),
];
Un dataprovider :
$dataProvider = new ArrayDataProvider([
'key'=>'id',
'allModels' => $resultData,
'sort' => [
'attributes' => ['id', 'name', 'email'],
],
]);
Et le contrôle Gridview :
echo GridView::widget([
'dataProvider' => $dataProvider,
'columns' => [
['class' => 'yii\grid\SerialColumn'],
'id',
[
'attribute' => 'name',
'value' => 'name',
],
[
"attribute" => "email",
'value' => 'email',
]
]
]);
Comme tel, le code me faire Afficher le tableau dans une grille, et la possibilité de les trier en cliquant sur les colonnes. C'est ok.
Mais comment faire pour utiliser le filtrage ?
J'ai essayé avec les éléments suivants :
$searchModel = ['id' => null, 'name' => '', 'email' => ''];
echo GridView::widget([
'dataProvider' => $dataProvider,
'filterModel' => $searchModel,
'columns' => [
['class' => 'yii\grid\SerialColumn'],
'id',
[
'attribute' => 'name',
'value' => 'name',
],
[
"attribute" => "email",
'filter' => '<input class="form-control" name="filteremail" value="da" type="text">',
'value' => 'email',
]
]
]);
Mais cela ne fonctionne pas.
Ne je filtre à moi-même l'objet selon l' $d'obtenir une valeur ?
Que voulez-vous dire par "ça ne marche pas"? La recherche des entrées ne sont pas affichés?
Ce que je veux dire par pas de travail, c'est que l'entrée sont montrent que si j'ai mis le filtre comme dans l'exemple. 'filter' => '<input class="form-control" name="filteremail" value="da" type="text">', 'valeur' => 'email', Mais les données ne sont pas filtrés.
Ce que je veux dire par pas de travail, c'est que l'entrée sont montrent que si j'ai mis le filtre comme dans l'exemple. 'filter' => '<input class="form-control" name="filteremail" value="da" type="text">', 'valeur' => 'email', Mais les données ne sont pas filtrés.
OriginalL'auteur Ydakilux | 2015-02-10
Vous devez vous connecter pour publier un commentaire.
Ma solution avec le code complet :
Utiliser "pas à l'identique" (!==) au lieu de "non égal" (!=) en fonction de filtre, pour éviter les mauvais filtrage, voir stpos
OriginalL'auteur Ydakilux
Sur la précédente soultion. J'ai créé une boucle pour faire des filtres, des colonnes et des searchModel.
OriginalL'auteur user3132270
Un dataprovider :
https://getyii.com/topic/736
OriginalL'auteur 蔡正海