温馨提示×

温馨提示×

您好,登录后才能下订单哦!

密码登录×
登录注册×
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》

如何在Yii中利用CLinkPager实现一个分页功能

发布时间:2020-12-11 16:45:25 来源:亿速云 阅读:234 作者:Leah 栏目:开发技术

这篇文章给大家介绍如何在Yii中利用CLinkPager实现一个分页功能,内容非常详细,感兴趣的小伙伴们可以参考借鉴,希望对大家能有所帮助。

首先在components中自定义LinkPager,并继承CLinkPager

具体代码如下:

<?php /**  * CLinkPager class file.  *  * @link http://www.yiiframework.com/  * @copyright Copyright &copy; 2008-2011 Yii Software LLC  * @license http://www.yiiframework.com/license/  */ /**  * CLinkPager displays a list of hyperlinks that lead to different pages of target.  *  * @version $Id$  * @package system.web.widgets.pagers  * @since 1.0  */ class LinkPager extends CLinkPager {  const CSS_TOTAL_PAGE='total_page';  const CSS_TOTAL_ROW='total_row';    /**  * @var string the text label for the first page button. Defaults to '<< First'.  */  public $totalPageLabel;  /**  * @var string the text label for the last page button. Defaults to 'Last >>'.  */  public $totalRowLabel;    /**  * Creates the page buttons.  * @return array a list of page buttons (in HTML code).  */  protected function createPageButtons()  {       $this->maxButtonCount=8;      $this->firstPageLabel="首页";     $this->lastPageLabel='末页';      $this->nextPageLabel='下一页';     $this->prevPageLabel='上一页';      $this->header="";    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);    // 页数统计  $buttons[]=$this->createTotalButton(($currentPage+1)."/{$pageCount}",self::CSS_TOTAL_PAGE,false,false);    // 条数统计  $buttons[]=$this->createTotalButton("共{$this->getItemCount()}条",self::CSS_TOTAL_ROW,false,false);  return $buttons;  }    protected function createTotalButton($label,$class,$hidden,$selected)  {  if($hidden || $selected)   $class.=' '.($hidden ? self::CSS_HIDDEN_PAGE : self::CSS_SELECTED_PAGE);  return '<li class="'.$class.'">'.CHtml::label($label,false).'</li>';  }    /**  * Registers the needed client scripts (mainly CSS file).  */  public function registerClientScript()  {  if($this->cssFile!==false)   self::registerCssFile($this->cssFile);  }    /**  * Registers the needed CSS file.  * @param string $url the CSS URL. If null, a default CSS URL will be used.  */  public static function registerCssFile($url=null)  {  if($url===null)   $url=CHtml::asset(Yii::getPathOfAlias('application.components.views.LinkPager.pager').'.css');  Yii::app()->getClientScript()->registerCssFile($url);  } }

定义CSS样式

/**  * 翻页样式  */ .page_blue{  margin: 3px;  padding: 3px;  text-align: center;  font: 12px verdana, arial, helvetica, sans-serif; } ul.bluePager,ul.yiiPager {  font-size:11px;  border:0;  margin:0;  padding:0;  line-height:100%;  display:inline;  text-aligin:center; } ul.bluePager li,ul.yiiPager li {  display:inline; } ul.bluePager a:link,ul.yiiPager a:link, ul.bluePager a:visited,ul.yiiPager a:visited, ul.bluePager .total_page label,ul.yiiPager .total_page label, ul.bluePager .total_row label,ul.yiiPager .total_row label {  border: #ddd 1px solid;  color: #888888 !important;  padding:2px 5px;  text-decoration:none; } ul.bluePager .page a,ul.yiiPager .page a {  font-weight:normal; } ul.bluePager a:hover,ul.yiiPager a:hover {  color:#FFF !important; border:#156a9a 1px solid; background-color:#2b78a3 } ul.bluePager .selected a,ul.yiiPager bluePager .selected a {  color:#3aa1d0 !important;  border: 1px solid #3aa1d0; } ul.bluePager .selected a:hover,ul.yiiPager .selected a:hover {  color:#FFF !important; } ul.bluePager .hidden a,ul.yiiPager .hidden a {  border:solid 1px #DEDEDE;  color:#888888; } ul.bluePager .hidden,ul.yiiPager .hidden {  display:none; }

controller中操作:

//分页操作 $criteria=new CDbCriteria; $criteria->order='id DESC'; $criteria->select=array('id','uid','username','title','thumb','url','clicks','time','dateline','countfavorite','quality'); $criteria->condition=$sql; $total = Video::model()->count($criteria); $pages = new CPagination($total);   $pages->pageSize=self::PAGE_SIZE; $pages->applyLimit($criteria);    $list = Video::model()->findAll($criteria); $title = CommonClass::model()->find(array(  'select'=>array('cname'),  'condition'=>'id = '.$id, ));   $this->render('application.views.video.list',array(  'array'=>$array,  'arr'=>$arr,  'result'=>$result,  'list'=>$list,  'pages'=>$pages,  'title'=>$title, ));

在views/video/list.php中引用:

<?php  $this->widget('LinkPager', array('pages' => $pages,));  ?>

关于如何在Yii中利用CLinkPager实现一个分页功能就分享到这里了,希望以上内容可以对大家有一定的帮助,可以学到更多知识。如果觉得文章不错,可以把它分享出去让更多的人看到。

向AI问一下细节

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

AI