Сделал dropdown фильтр, он отображается, при выборе уходит AJAX запрос, но на данные это не влияет… я подозреваю что проблема в моделе в методе search(), но где конкретно…
Если в search() вместо $criteria->compare(‘client_id’,$this->client_id); поставить $criteria->compare(‘client_id’,$_REQUEST[‘Tasks’][‘client_id’]); то фильтр работает как положено, видимо $this->client_id не проходит валидацию хотя он у меня прописан как ‘safe’
VIEW:
$this->widget('zii.widgets.grid.CGridView', array(
'dataProvider'=>$model->search(),
'filter' => $model,
'columns'=>array(
array(
'name' => 'client_id',
'filter' => CHtml::listData(Client::model()->findAll(), 'client_id', 'name'),
'value'=>'$data->client->name'
),
'task'
)
));
MODEL:
public function rules()
{
// NOTE: you should only define rules for those attributes that
// will receive user inputs.
return array(
array('client_id, task', 'required'),
array('client_id, complete', 'numerical', 'integerOnly'=>true),
array('task', 'length', 'max'=>5000),
array('start_date','default',
'value'=>new CDbExpression('NOW()'),
'setOnEmpty'=>false,'on'=>'insert'),
array('task_id, client_search, task, start_date, end_date, complete,client_id', 'safe', 'on'=>'search'),
);
}
public function relations()
{
// NOTE: you may need to adjust the relation name and the related
// class name for the relations automatically generated below.
return array(
'client' => array(self::BELONGS_TO, 'Client', 'client_id'),
);
}
public function search()
{
// Warning: Please modify the following code to remove attributes that
// should not be searched.
$criteria=new CDbCriteria;
$criteria->with = array('client');
$criteria->compare('task_id',$this->task_id);
$criteria->compare('client_id',$this->client_id);
$criteria->compare('name',$this->client->name);
$criteria->compare('task',$this->task,true);
$criteria->compare('start_date',$this->start_date,true);
$criteria->compare('end_date',$this->end_date,true);
$criteria->compare('complete',$this->complete);
return new CActiveDataProvider($this, array(
'criteria'=>$criteria,
));
}