Хотел бы узнать, как правильно сделать нужный мне роутинг в пагинации.
Если ничего не изменять, то все работает правильно, но мне хочется сделать красивый адрес.
Правила:
'rules'=>array(
'<controller:blacklist>/<type:renters|lessors>' => '<controller>/list/type/<type>',
'<controller:blacklist>/<type:renters|lessors>/page/<page:\d+>' => '<controller>/list/type/<type>/page/<page>',
),
Контроллер:
public function actionList($type='renters')
{
$types_id = ($type=='renters') ? BlackList::TYPE_RENTER : BlackList::TYPE_LESSOR;
$criteria=new CDbCriteria();
$criteria->addSearchCondition('types_id', $types_id, false);
if(isset($_GET['search']))
{
$criteria = BlackList::model()->getDbCriteria()
->addSearchCondition('person_name', '%'.$_GET['search'].'%', false)
->addSearchCondition('types_id', $types_id, false);
}
$count = BlackList::model()->count($criteria);
$pages=new CPagination($count);
$pages->pageSize=3;
$pages->applyLimit($criteria);
$pages->route = $type;
$pages->params = array();
$items = BlackList::model()->findAll($criteria);
$this->render($type.'-list', array(
'type' => $type,
'items' => $items,
'pages' => $pages
));
}
Сейчас вывод работает по ссылке:
/blacklist/lessors.html
/blacklist/renters.html
При пагинации так:
/blacklist/lessors/page/1.html
/blacklist/renters/page/1.html
Но там на странице есть еще поле, где можно указать критерий для поиска ($_GET[‘search’]).
И когда я его использую, то адрес становится таким:
/blacklist/lessors.html?search=запрос
Информация выводится с учетом этого критерия, все работает правильно, но ссылке на пагинацию выводятся прежние:
/blacklist/lessors/page/1.html
а нужно такие:
/blacklist/lessors/page/1.html?serach=запрос
Понимаю, что дело состоит в:
$pages->route = $type;
$pages->params = array();
Что можете сказать? Возможно не очень понятно объяснил, просто спешил.