В Cgridview Не Работают Фильтры, По Непонятной Причине

Сделал абсолютно минимальный набор стандартный действий для вывода грида:

Модель ArticleCategory:




...

// в правилах добавил:

array('title, subcategoryOfId, keywords, sdescription, fullTitle, pos, num_instances', 'safe', 'on'=>'search'), 

...

    public function search(){

        

        $criteria=new CDbCriteria;

        $criteria->compare('title', $this->title, true);

        

        $sort = new CSort();

        $sort->defaultOrder = 'title ASC';

        

        return new CActiveDataProvider('ArticleCategory', array(

            'criteria'=>$criteria,

            'sort' => $sort

        ));

    }

...



Контроллер:




class ArticleCategoryController extends MyController {

    

    public function actionAdmin(){    

        $model = new ArticleCategory('search');

        $model->unsetAttributes();

        if(isset($_GET['ArticleCategory']))

            $model->attributes = $_GET['ArticleCategory'];

        $this->render('admin',array(

            'model'=>$model,

        ));    

    }    

}

 

Представление грида - admin.php:




$this->widget('zii.widgets.grid.CGridView', array(

    'dataProvider' => $model->search(),

    'filter' => $model,

    'columns' => array(

        'title',

        'keywords',

        'sdescription',

        'fullTitle',

    ),

));



Сортировка работает нормально.

Но вот фильтр вообще не хочет работать, при вводе чего нибудь, например в поле для поиска по title, в гриде, ничего не происходит, бесконечно крутиться grid-view-loading гифка и все.

Подскажите пожалуйста в чем может быть ошибка, примерно где, куда хоть копать?

Если в $criteria->compare(‘title’, ‘какие_то_символы’, true); все нормально работает.

Еще, не знаю причастно ли это, но при открытой панели веб-разработке в Хроме на вкладке Scripts, при вводе чего нибудь в фильтр и нажатии Enter, скрипт тормозиться на этой строчке:

файл-jquery.yiigridview.js , строка-304:


                

if (options.data !== undefined && options.type === 'GET') {

                    options.url = $.param.querystring(options.url, options.data); //строка 304

                    options.data = {};

}



Может это поможет, помогите плиз, а то уже не знаю куда смотреть и что проверять!

Если "loader.gif" крутится постоянно, значит он не получает ответ от сервера, или же не может его отпарсить.

Проверьте в браузере на закладке "Сеть":

  1. уходит ли запрос на сервер, когда вы что то вводите в окно фильтра

  2. приходит ли ответ

  3. правильный ли это ответ (ну может в нем отрендеренное представление с ошибкой пришло, тогда надо смотреть application.log за подробностями)

  4. Также проверьте консоль на наличие JS ошибок

Если константы работают лучше чем переменная "$this->title" то скорее всего при массовом присваивании что то присваивается не верно. Попробуйте получить дамп $_POST переменной, например запишите её в лог.

Спасибо, Charger, хоть кто то ответил. А то на yiiframework.ru/forum со вчера никто не пишет.

Буду пробовать.

Ваш код у меня работает. Ошибка скорее всего в js где-то. Попробуйте посмотреть что у вас в ответе от сервера и ошибки в логе. На крайний случай перекачайте jquery.yiigridview.js или обновите Yii. Сейчас на этой строке вот такая конструкция:




if (options.type === 'GET') {

					if (options.data !== undefined) {

						options.url = $.param.querystring(options.url, options.data);

						options.data = {};

					}



Да и правда код jquery.yiigridview.js немного разный :unsure:.

Скачал последнюю версию фреймверка, поставил, теперь сортировки работают, но а текстовые поля фильтров вообще перестали на что то реагировать. Ввожу символы, не происходит ничего, даже запрос не отправляется.

папку с asset’ми не забыли почистить?

Спасибо, всем за советы.

Вчера нашел причину, но не мог сразу отписать, потому что в день блин больше 3 сообщений нельзя писать.

Вот причина проблемы, если кому то будет нужно: http://yiiframework.ru/forum/viewtopic.php?f=3&t=13640

Я кстати так долго парился, потому как не мог понять причину проблемы, а вообще постов по этой теме оказалось довольно много, особенно англоязычных.