CGridView Pagination с проверкой на POST в контроллере

Общие вопросы по использованию фреймворка. Если не знаете как что-то сделать и это про Yii, вам сюда.
Ответить
S1lent
Сообщения: 47
Зарегистрирован: 2012.07.17, 09:20

CGridView Pagination с проверкой на POST в контроллере

Сообщение S1lent »

Добрый день,

В контроллере проверяю на наличие от пользователя корректно выбранного диапазона даты ($_POST), и используя CGridView во вьюхе и CArrayDataProvider в моделе - вывожу страницу отчёта с ~ 10000 записей.
Вся загвоздка в том что сама форма с полями для заполнения интервала времени и сам отчёт находятся в одном представлении, и при пагинации, переходя на любую страницу(?page=2), контроллер не видя массива POST c данными просто отображает пустую форму, как будто пользователю снова необходимо выбрать временной интервал.
Вопрос: правильно ли я понимаю что при нажатии на ссылку пагинации мне необходимо снова постом передавать данные формы, и если так то как это проще реализовать?

Привожу упрощённый код контроллера

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

        if (isset($_POST['Houses'])) {
            $model = new Houses();
            $model->attributes = $_POST['Houses'];
            if ($model->validate()) {
                   Yii::app()->controller->render('Houses', ['model' => $model]);}
        } esle {
            Yii::app()->controller->render('Houses');
        }
 
Код вьюхи примерно такой
Отображаю форму;
Если есть переменная $model то отображаю CGridView;
Аватара пользователя
aser
Сообщения: 167
Зарегистрирован: 2009.04.02, 14:25
Откуда: Киев

Re: CGridView Pagination с проверкой на POST в контроллере

Сообщение aser »

Решал:
В контроллере присваивал модели данные фильтрации. Уверен что можно устанавливать фильтр прямо в CGridView. С диапазоном просто не работал.
В CGridView выводил колонки по данным фильтрам, если не нужно было отображать данный, столбик делал скрытым.

Все остальное за вас сделает Yii
Аватара пользователя
aser
Сообщения: 167
Зарегистрирован: 2009.04.02, 14:25
Откуда: Киев

Re: CGridView Pagination с проверкой на POST в контроллере

Сообщение aser »

Еще может вариантом быть через beforeAjaxUpdate добавить параметр в url
Ответить