CGridView кастомная фильтрация

Общие вопросы по использованию фреймворка. Если не знаете как что-то сделать и это про Yii, вам сюда.
Ответить
kukuruku
Сообщения: 1318
Зарегистрирован: 2011.02.14, 11:36

CGridView кастомная фильтрация

Сообщение kukuruku »

как правильно сделать фильтрацию в гриде, если одно поле фильтрации находится вне грида?
счас сделал так-объявил явно Chtml::beginForm, добавил выпадающий список, повесил обработчик

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

<script>
    
    $('#element').change(function(){
        reloadGrid();
    });
    
    function reloadGrid(){

        $.fn.yiiGridView.update('project-grid', 
           {data: $('#form').serialize()}
        );
        
    }
    
</script>
проблема в том что при фильтрации в самом гриде не подхватывается и не передается это внешнее поле
как сделать чтобы оно подхватывалось?
kukuruku
Сообщения: 1318
Зарегистрирован: 2011.02.14, 11:36

Re: CGridView кастомная фильтрация

Сообщение kukuruku »

будут идеи?
kukuruku
Сообщения: 1318
Зарегистрирован: 2011.02.14, 11:36

Re: CGridView кастомная фильтрация

Сообщение kukuruku »

не совсем понятное решение
то что надо передавать везде кастомное поле- это ясно
вопрос в том как его передавать при фильтрации?

можно конечно сделать постбек и в урл добавить или в сессию сохранить, но хочется простое решение
гугление никак не помогает
Аватара пользователя
because
Сообщения: 689
Зарегистрирован: 2010.09.30, 22:01

Re: CGridView кастомная фильтрация

Сообщение because »

что именно не получается, не работает фильтрация. или не запоминается поле в последующей фильтрации ?
там вроде можно не оборачивать данные в еще один объект, хотя уже точно не помню.
а далее все просто, в модели должно быть свойство(а), в которое записываешь данные и в search() раскладываешь на критерии

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

       $.fn.yiiGridView.update('project-grid', $('#form').serialize());
 
RTFM !
lucker
Сообщения: 11
Зарегистрирован: 2012.08.17, 01:43

Re: CGridView кастомная фильтрация

Сообщение lucker »

Я делаю так - в beforeAjaxUpdate к url добавляю сериализованные даные кастомной формы фильтрации:

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

$this->widget('zii.widgets.grid.CGridView', array(
        'id' => 'grid-id',            
        'dataProvider' => $model->search(),
        'filter' => $model,
        'ajaxUrl' => '/path/to/controller',        
        'beforeAjaxUpdate' => "function (id, data) {data.url = data.url + '&' + $('form#custom-form').serialize()}",
        'columns' => array(            
            ...........    
        ),
    )); 
kukuruku
Сообщения: 1318
Зарегистрирован: 2011.02.14, 11:36

Re: CGridView кастомная фильтрация

Сообщение kukuruku »

because
проблема в том, что когда фильтрую через поля грида, не передается значение фильтрационного поля, которое находится вне грида. значение там есть но передаются только поля фильтрации внутри грида

lucker
с beforeAjaxUpdate работает, но не скажу что красивое решение
но все равно спасибо
Ответить