Au lieu d'essayer de réinventer la roue, vous pouvez simplement utiliser le widget CGridView . Il a la fonctionnalité de tri et de filtrage. Consultez la documentation et vous constaterez qu'il existe de nombreuses configurations avec lesquelles vous pouvez jouer. L'extrait de code suivant utilise une configuration minimale.
.../vues/supermarchés/index.php :
<?php
$this->widget('zii.widgets.grid.CGridView', array(
'id' => 'supermarkets-grid',
'dataProvider' => $model->search(),
'filter' => $model,
'columns' => array(
'name',
'location',
'telephone',
'fax',
'website'
),
));
?>
Implémenter la fonction search() dans le modèle Supermarchés.
public function search()
{
$criteria=new CDbCriteria;
$criteria->compare('name',$this->name,true);
$criteria->compare('location',$this->location,true);
$criteria->compare('telephone',$this->telephone,true);
$criteria->compare('fax',$this->fax,true);
$criteria->compare('website',$this->website,true);
return new CActiveDataProvider(get_class($this), array(
'criteria'=>$criteria,
'sort'=>array(
'defaultOrder'=>'name ASC',
),
'pagination'=>array(
'pageSize'=>20
),
));
}
Contrôleurs/SupermarchésContrôleur :.
public function actionIndex() {
$model =new Supermarkets('search');
if(isset($_GET['Supermarkets']))
$model->attributes =$_GET['Supermarkets'];
return $this->render('index', array('model'=>$model));
}