Вместо да се опитвате да преоткривате колелото, можете просто да използвате предоставената от Yii притурка CGridView . Има функция за сортиране и филтриране. Проверете документацията и ще откриете, че има много конфигурации, с които можете да играете. Следният кодов фрагмент използва минимална конфигурация.
.../views/supermarkets/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'
),
));
?>
Внедрете функцията search() в модела на супермаркетите.
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
),
));
}
Контролери/СупермаркетиКонтролер:.
public function actionIndex() {
$model =new Supermarkets('search');
if(isset($_GET['Supermarkets']))
$model->attributes =$_GET['Supermarkets'];
return $this->render('index', array('model'=>$model));
}