styleroom
(Styleroom)
1
всем привет
могу ли я изменить УРЛы в пагинации к zii.widgets.grid.CGridView ?
переношу админку в модуль и застопорился на пагинаторе…
сейчас ссылка выглядит так = http://site.ru/adm_news/admin/?News_page=2
а надо чтобы было так = http://site.ru/adm/adm_news/admin/?News_page=2
styleroom
(Styleroom)
2
первое, что пришло в голову - клонировать и допилить ClinkPager
который будет находиться в данном модуле
вот допиливание =
public $btnClass = 'btn btn-default';
public $module_name = '';
public $page_param = '';
protected function createPageButton($label,$page,$class,$hidden,$selected)
{
if($hidden || $selected)
{
$class.=' '.($hidden ? $this->hiddenPageCssClass : 'btn-danger');
$style.=' '.($hidden ? 'display: hidden;' : '');
}
return CHtml::link(
$label,
$this->myUrl($page),
# $this->createPageUrl($page), // оригинальный метод класса
array(
'class'=>$this->btnClass.' '.$class,
'role'=>'button',
'style'=>$style,
));
}
protected function myUrl ($page)
{
$obj = Yii::app()->controller;
$arr = array();
$page = $page + 1; // номер страницы
if ($page === 1)
{
$arr = array("{$this->module_name}/{$obj->id}/{$obj->action->id}");
}
else
{
$arr = array("{$this->module_name}/{$obj->id}/{$obj->action->id}",
"{$this->page_param}"=>$page);
}
return $arr;
}
вот использование =
'pager' => array(
'firstPageLabel'=>'<<',
'prevPageLabel'=>'<',
'nextPageLabel'=>'>',
'lastPageLabel'=>'>>',
'maxButtonCount'=>'10',
'header'=>false,
'class'=>'application.modules.adm.components.MyCLinkPager',
'btnClass'=>'btn btn-default btn-sm',
'module_name'=>'adm',
'page_param'=>'News_page',
),
styleroom
(Styleroom)
3
оказалось, что проблему можно решить гораздо проще и изящнее
нужно в классе модуля в методе инит указать Yii::app()->urlManager->baseUrl
public function init()
{
Yii::app()->assetManager->baseUrl = '/assets/';
Yii::app()->urlManager->baseUrl = 'http://site.ru/adm';
// import the module-level models and components
$this->setImport(array(
'adm.models.*',
'adm.components.*',
));
}
1 Like