Yii: CGridView Filter examples
Last updated:In order to able to use filters in a CGridView inside a Yii application, this is what you need to do:
on the model, you need a search()
method (maybe you already have one, if you used Gii)
public function search() {
$criteria = new CDbCriteria;
$criteria->compare('id', $this->id);
$criteria->compare('name', $this->name, true);
/*
* ------now the data provider---------
*/
return new CActiveDataProvider($this, array(
'criteria' => $criteria,
'pagination' => array(
'pageSize' => 20,
),
));
}
in the controller, this is the code you need(replace actionIndex
, YourModelClassName
with your specific values):
public function actionIndex() {
$model = new YourModelClassName('search');
$model->unsetAttributes(); // clear any default values
if(isset($_GET['YourModelClassName'])){
$model->attributes=$_GET['YourModelClassName'];
}
$this->render('index', array(
'model'=>$model,
));
}
on the view file: (where you actually instantiate the CGridView
):
<?php $this->widget('zii.widgets.grid.CGridView', array(
'dataProvider'=>$model->search(),
'filter'=>$model,
If you want look at how to make filters with related models, you might want to have a look at this: yii-cheat-sheet-filtering-by-related-models-in-a-cgridview
N.B.: another good source of example on how to make filters are the admin view files that are generated by Gii.
This is a w.i.p. (work in progress).