包 | system.web.widgets.pagers |
---|---|
继承 | class CLinkPager » CBasePager » CWidget » CBaseController » CComponent |
源自 | 1.0 |
版本 | $Id: CLinkPager.php 3515 2011-12-28 12:29:24Z mdomba $ |
源码 |
CLinkPager用于显示分页的超链接列表。
公共属性
属性 | 类型 | 描述 | 定义在 |
---|---|---|---|
actionPrefix | string | actions的ID的前缀。 当微件在CController::actions中声明了 动作提供者,可以为其动作的ID指定前缀以区别 于别的微件或控制器。当微件用于控制器 的视图中时,必须配置同样的前缀。 | CWidget |
controller | CController | 返回此微件所属的控制器。 | CWidget |
cssFile | mixed | 用于挂件的CSS样式文件。默认是 null, 意味着将使用包含在挂件里的CSS样式。 如果是false,就不会使用CSS样式。如果定义了该属性, 使用该挂件时指定的CSS会被包含进来。 | CLinkPager |
currentPage | integer | 当前页的索引(从0开始)。缺省为0。 | CBasePager |
firstPageLabel | string | “第一页”按钮的文本。默认是’<< First‘。 | CLinkPager |
footer | string | 分页按钮后面显示的文本。 | CLinkPager |
header | string | 分页按钮前面显示的文本。默认是’Go to page: ‘。 | CLinkPager |
htmlOptions | array | 分页标签的HTML属性。 | CLinkPager |
id | string | 返回此微件的ID。如果需要的话,将生产一个新的ID并将其返回。 | CWidget |
itemCount | integer | 项目的总量。 | CBasePager |
lastPageLabel | string | “最后一页”按钮的文本。默认是’Last >>‘。 | CLinkPager |
maxButtonCount | integer | 要显示的最多分页按钮数。默认10。 | CLinkPager |
nextPageLabel | string | “下一页”按钮的文本。默认‘Next >’。 | CLinkPager |
owner | CBaseController | 返回此微件的所有者或创建者。 | CWidget |
pageCount | integer | 页数 | CBasePager |
pageSize | integer | 每页包含项目的数量。 | CBasePager |
pages | CPagination | 返回此pager所用的分页信息。 | CBasePager |
prevPageLabel | string | “上一页”按钮的文本。默认‘< Previous’。 | CLinkPager |
skin | mixed | 微件使用的皮肤的名称。默认为“default”。 如果此属性设置为false,微件将不会有皮肤被使用。 | CWidget |
viewPath | string | 返回包含此微件所需的视图文件的路径。 | CWidget |
受保护属性
属性 | 类型 | 描述 | 定义在 |
---|---|---|---|
pageRange | array | 要显示的开始和结束页。 | CLinkPager |
公共方法
受保护方法
方法 | 描述 | 定义在 |
---|---|---|
createPageButton() | 创建一个分页按钮。 | CLinkPager |
createPageButtons() | 创建分页按钮。 | CLinkPager |
createPageUrl() | 创建分页适用的URL。 | CBasePager |
createPages() | 创建缺省分页。 | CBasePager |
getPageRange() | 返回要显示的开始和结束页。 | CLinkPager |
属性详细
cssFile
属性
public mixed $cssFile;
用于挂件的CSS样式文件。默认是 null, 意味着将使用包含在挂件里的CSS样式。 如果是false,就不会使用CSS样式。如果定义了该属性, 使用该挂件时指定的CSS会被包含进来。
firstPageLabel
属性
public string $firstPageLabel;
“第一页”按钮的文本。默认是’<< First‘。
public string $footer;
分页按钮后面显示的文本。
header
属性
public string $header;
分页按钮前面显示的文本。默认是’Go to page: ‘。
htmlOptions
属性
public array $htmlOptions;
分页标签的HTML属性。
lastPageLabel
属性
public string $lastPageLabel;
“最后一页”按钮的文本。默认是’Last >>‘。
maxButtonCount
属性
public integer $maxButtonCount;
要显示的最多分页按钮数。默认10。
nextPageLabel
属性
public string $nextPageLabel;
“下一页”按钮的文本。默认‘Next >’。
pageRange
属性
只读
protected array getPageRange()
要显示的开始和结束页。
prevPageLabel
属性
public string $prevPageLabel;
“上一页”按钮的文本。默认‘< Previous’。
方法详细
createPageButton()
方法
protected string createPageButton(string $label, integer $page, string $class, boolean $hidden, boolean $selected)
| ||
$label | string | 按钮上的文本 |
$page | integer | 页码 |
$class | string | 分页按钮的CSS样式。这可以是’page‘,’first‘,’last‘,’next‘或’previous‘。 |
$hidden | boolean | 是否显示分页按钮 |
$selected | boolean | 是否选中分页按钮 |
{return} | string | 生成的按钮 |
protected function createPageButton($label,$page,$class,$hidden,$selected)
{
if($hidden || $selected)
$class.=' '.($hidden ? self::CSS_HIDDEN_PAGE : self::CSS_SELECTED_PAGE);
return '<li class="'.$class.'">'.CHtml::link($label,$this->createPageUrl($page)).'</li>';
}
创建一个分页按钮。 你可以重写这个方法来定制分页按钮。
createPageButtons()
方法
protected array createPageButtons()
| ||
{return} | array | 分页按钮的列表(返回的是HTML代码)。 |
protected function createPageButtons()
{
if(($pageCount=$this->getPageCount())<=1)
return array();
list($beginPage,$endPage)=$this->getPageRange();
$currentPage=$this->getCurrentPage(false); // currentPage is calculated in getPageRange()
$buttons=array();
// first page
$buttons[]=$this->createPageButton($this->firstPageLabel,0,self::CSS_FIRST_PAGE,$currentPage<=0,false);
// prev page
if(($page=$currentPage-1)<0)
$page=0;
$buttons[]=$this->createPageButton($this->prevPageLabel,$page,self::CSS_PREVIOUS_PAGE,$currentPage<=0,false);
// internal pages
for($i=$beginPage;$i<=$endPage;++$i)
$buttons[]=$this->createPageButton($i+1,$i,self::CSS_INTERNAL_PAGE,false,$i==$currentPage);
// next page
if(($page=$currentPage+1)>=$pageCount-1)
$page=$pageCount-1;
$buttons[]=$this->createPageButton($this->nextPageLabel,$page,self::CSS_NEXT_PAGE,$currentPage>=$pageCount-1,false);
// last page
$buttons[]=$this->createPageButton($this->lastPageLabel,$pageCount-1,self::CSS_LAST_PAGE,$currentPage>=$pageCount-1,false);
return $buttons;
}
创建分页按钮。
getPageRange()
方法
protected array getPageRange()
| ||
{return} | array | 要显示的开始和结束页。 |
protected function getPageRange()
{
$currentPage=$this->getCurrentPage();
$pageCount=$this->getPageCount();
$beginPage=max(0, $currentPage-(int)($this->maxButtonCount/2));
if(($endPage=$beginPage+$this->maxButtonCount-1)>=$pageCount)
{
$endPage=$pageCount-1;
$beginPage=max(0,$endPage-$this->maxButtonCount+1);
}
return array($beginPage,$endPage);
}
init()
方法
public void init()
|
public function init()
{
if($this->nextPageLabel===null)
$this->nextPageLabel=Yii::t('yii','Next >');
if($this->prevPageLabel===null)
$this->prevPageLabel=Yii::t('yii','< Previous');
if($this->firstPageLabel===null)
$this->firstPageLabel=Yii::t('yii','<< First');
if($this->lastPageLabel===null)
$this->lastPageLabel=Yii::t('yii','Last >>');
if($this->header===null)
$this->header=Yii::t('yii','Go to page: ');
if(!isset($this->htmlOptions['id']))
$this->htmlOptions['id']=$this->getId();
if(!isset($this->htmlOptions['class']))
$this->htmlOptions['class']='yiiPager';
}
通过设置一些默认属性值初始化pager。
registerClientScript()
方法
public void registerClientScript()
|
public function registerClientScript()
{
if($this->cssFile!==false)
self::registerCssFile($this->cssFile);
}
加载所需的客户端脚本(主要是CSS文件)。
registerCssFile()
方法
public static void registerCssFile(string $url=NULL)
| ||
$url | string | CSS URL。如果为null,那么会使用默认的CSS URL。 |
public static function registerCssFile($url=null)
{
if($url===null)
$url=CHtml::asset(Yii::getPathOfAlias('system.web.widgets.pagers.pager').'.css');
Yii::app()->getClientScript()->registerCssFile($url);
}
加载所需的CSS文件。
run()
方法
public void run()
|
public function run()
{
$this->registerClientScript();
$buttons=$this->createPageButtons();
if(empty($buttons))
return;
echo $this->header;
echo CHtml::tag('ul',$this->htmlOptions,implode("\n",$buttons));
echo $this->footer;
}
执行这个挂件。 当显示生成的分页按钮时这个方法会覆盖父类的实现。