Решил ради интереса сделать в одном контроллере и отрисовку и обработку ajax (чтобы не было прблем с пагинацией):
контроллер:
public function loadconv2($searchstr) //
{
$searchstr="%".$searchstr."%";;
$dataProvider = new CActiveDataProvider('Conv', array(
'criteria' => array(
'with'=>array(
'users'=>array(
'condition'=>'user_id=:userId',
'order'=>'lastchange DESC',
'together'=>true,
'params'=>array(':userId'=>Yii::App()->user->id),
),
),
//!!Фильтрую результаты:
'condition'=>'conv_name like :srch',
'params'=>array(':srch'=>$searchstr),
),
'pagination' => array(
'pageSize' => '1',
)
));
return $dataProvider;
}
public function actionConvList()
{
$sstr=$_POST['search_input_field'];
$dataProviderConv=$this->loadconv2($sstr);
if (Yii::app()->request->isAjaxRequest){
$this->renderPartial('//conv/convlist', array(
'dataProviderConv'=>$dataProviderConv,
'sstr'=>$sstr,
));
}else {
$this->render('//conv/convlist', array(
'dataProviderConv'=>$dataProviderConv,
'sstr'=>$sstr,
));
}
}
вью convlist:
<?php if (Yii::app()->request->isAjaxRequest): ?>
<div id="data" style='clear:both'>
<?php
$this->renderPartial('//conv/_ajaxContent', array(
'dataProviderConv1'=>$dataProviderConv,
));
?>
</div>
<?php else: ?>
<?php
echo CHtml::textField(
'search_input_field',
'',
array(
'id'=>'search_input',
'class'=>"e",
'onkeyup'=>CHtml::ajax(
array(
'type'=>'POST',
'url'=> Yii::app()->createUrl('//conv/convlist'),
'update'=>'#data',
'data'=>'js:jQuery(this).serialize()'
)
),
)
);
?>
<div id="data" style='clear:both;'>
<?php
$this->renderPartial('//conv/_ajaxContent', array(
'dataProviderConv1'=>$dataProviderConv,
));
?>
</div>
<?php endif; ?>
вью _ajaxContent
<?php
$this->widget('zii.widgets.CListView', array(
'dataProvider'=>$dataProviderConv1,
'itemView'=>'//conv/_convview',
'enableSorting'=>true,
'ajaxUpdate' => true,
'template'=>"{items}\n{pager}", //this remove: Displaying #... of ... result
'cssFile'=> Yii::app()->theme->baseUrl.'/style.css',
));
?>
По идеи пробелмы быть не должно, но наблюдаю следующую картину:
-
вызываю /conv/convlist
-
вбиваю в input слово - появляется CListView (с пагинацией на аяксе) с отфильтрованными результатами
-
пытаюсь перейти на новую страничку - слетает фильтрация
Вообще непонятно пояему внезапно слетает фильтрация (есть предположение, что это баг). Посмотрите, пожалуйста, у кого будет возможность/желание, может что не так делаю?