CGridView не работает dropdown-фильтр

Общие вопросы по использованию фреймворка. Если не знаете как что-то сделать и это про Yii, вам сюда.
Ответить
terkin
Сообщения: 14
Зарегистрирован: 2012.09.20, 13:37

CGridView не работает dropdown-фильтр

Сообщение terkin »

Сделал dropdown фильтр, он отображается, при выборе уходит AJAX запрос, но на данные это не влияет.. я подозреваю что проблема в моделе в методе search(), но где конкретно.. и где про это можно подробнее почитать
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 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,
        ));
    }
YaZabylStariyNick
Сообщения: 130
Зарегистрирован: 2012.06.13, 12:48

Re: CGridView не работает dropdown-фильтр

Сообщение YaZabylStariyNick »

фильтр по связанным таблицам из коробки не работает. Его надо дописывать.
terkin
Сообщения: 14
Зарегистрирован: 2012.09.20, 13:37

Re: CGridView не работает dropdown-фильтр

Сообщение terkin »

У меня таблицы связанны, но в моем случае фильтр должен происходить по client_id который в таблице tasks, т.е пример его модели я и приводил, но такое впечатление что модель в методе search отказывается видеть client_id
Вложения
22.jpg
22.jpg (15.96 КБ) 3201 просмотр
terkin
Сообщения: 14
Зарегистрирован: 2012.09.20, 13:37

Re: CGridView не работает dropdown-фильтр

Сообщение terkin »

Если в search() вместо $criteria->compare('client_id',$this->client_id); поставить $criteria->compare('client_id',$_REQUEST['Tasks']['client_id']); то фильтр работает как положено, видимо $this->client_id не проходит валидацию хотя он у меня прописан как 'safe'

Код: Выделить всё

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_id, task, start_date, end_date, complete', 'safe', 'on'=>'search'),
        );
terkin
Сообщения: 14
Зарегистрирован: 2012.09.20, 13:37

Re: CGridView не работает dropdown-фильтр

Сообщение terkin »

По неопытности работы с Yii пропустил в контроллере передачу параметров модели.. все теперь все работает

Я все понял, я тупица :( теперь все работает:

Код: Выделить всё

public function actionIndex()
    {
        $model=new Tasks;
        if(isset($_REQUEST['Tasks']))
            $model->attributes=$_GET['Tasks'];
        $this->render('index',array(
            'model'=>$model
        ));
}
Аватара пользователя
Akulenok
Сообщения: 437
Зарегистрирован: 2014.05.05, 18:32
Откуда: localhost

Re: CGridView не работает dropdown-фильтр

Сообщение Akulenok »

а как тестировать этот серч-ajax запросы, у меня тоже не работает
ភាសាខ្មែរ Yii2 - это кайф!
Ответить