dialloma
(Malimoud)
June 27, 2012, 2:08pm
1
Bonjour,
J’utilise le composant CGridView de Yii pour afficher des données résultat d’une recherche.
Mais mes données sont envoyé en POST à partir du formulaire. Mais quand je veux faire le tri (clic sur le nom d’une colonne), Yii envoies l’information sous forme GET, et comme dans mon controlleur je récupérais les données sous forme POST, le tri ne marche pas.
J’aimerai donc savoir comment préciser au composant CGridView d’envoyer l’information sur le tri en POST et non en GET. Mon formulaire de recherche est un peu complexe pour envoyer toutes les données en GET.
Merci d’avance pour vos aides.
dialloma
fouss
(Jsfousseni)
June 28, 2012, 2:30pm
2
dialloma:
Bonjour,
J’utilise le composant CGridView de Yii pour afficher des données résultat d’une recherche.
Mais mes données sont envoyé en POST à partir du formulaire. Mais quand je veux faire le tri (clic sur le nom d’une colonne), Yii envoies l’information sous forme GET, et comme dans mon controlleur je récupérais les données sous forme POST, le tri ne marche pas.
J’aimerai donc savoir comment préciser au composant CGridView d’envoyer l’information sur le tri en POST et non en GET. Mon formulaire de recherche est un peu complexe pour envoyer toutes les données en GET.
Merci d’avance pour vos aides.
dialloma
Il serait bien que tu nous affiches ton code pour pouvoir mieux t’aider
grandoom
(Grandoom2010)
July 11, 2012, 9:36am
3
je pense que ceci pourrait t’aider…
1 - defini tes critères de recherche dans ton ‘modèle’
exemple
public function search()
{
// Warning: Please modify the following code to remove attributes that
// should not be searched.
$criteria=new CDbCriteria;
//$criteria->scopes='activeTeams';
$criteria->compare('name',$this->name,true);
$criteria->compare('leader',$this->leader,true);
//$criteria->order = 'victory DESC';
return new CActiveDataProvider($this, array(
'criteria'=>$criteria,
'pagination'=>array(
'pageSize'=>'5',
),
));
}
surtout ne force pas un classement dans ton objet ‘criteria’ [$criteria->order = ‘victory DESC’;] car tu ne pourras plus trier les colonnes
2 - puis crée un fonction dans ton ‘controleur’ contenant tes critères complexes de recherche
exemple
public function actionIndex()
{
$model=new TblTeams('search');
$model->unsetAttributes(); // clear any default values
if(isset($_GET['TblTeams']))
$model->attributes=$_GET['TblTeams'];
$this->render('index',array(
'model'=>$model,
));
}
dans la ‘view’ rien de bien spécial a mettre si ce n’est le widget CGridView…