Если бы вы использовали CGridView , было бы легко добавить фильтры с подкачкой - он встроен. Просто посмотрите на представление admin.php, отображаемое инструментом Gii crud (или, возможно, демо-версию блога) , Возможно, вы не хотите отображать журналы в виде таблицы.
Вместо установки переменных сеанса вы можете сделать форму с сохранением состояния и сохранить предыдущее состояние с помощью setPageState (). Я не знаю, отправляет ли пагинация форму, хотя ... возможно, вам придется привязать событие jQuery, чтобы отправить форму при нажатии на ссылки пагинации. Это было бы ужасно, если бы тебе пришлось это сделать.
Что касается очистки переменных состояния сеанса, моя единственная идея сейчас состоит в том, чтобы переопределить onBeginRequest () или что-то, чтобы проверить, находится ли пользователь на странице поиска, и если они не , тогда очистите переменная сеанса. Вы также можете просто оставить его - установить короткий срок годности и забыть об этом. Или сохранить его в своей базе данных вместо сеанса? : P
EDIT
Если вы идете по пути переопределения onBeginRequest (), это выглядит так же просто, как объявление обратного вызова в файле конфигурации. Больше информации здесь на форумах Yii , и здесь тоже . Хотя я никогда не делал это сам. Удачи!