Maison php教程 PHP开发 Explication détaillée des exemples de pagination utilisant CLinkPager dans Yii

Explication détaillée des exemples de pagination utilisant CLinkPager dans Yii

Dec 23, 2016 pm 05:05 PM

Cet article explique principalement comment utiliser CLinkPager pour la pagination dans YII. Ici, nous utilisons la forme des objets pour définir la pagination :

Personnalisez d'abord LinkPager dans les composants et héritez du code spécifique de CLinkPager

Comme suit :

<?php
/**
 * CLinkPager class file.
 *
 * @link http://www.yiiframework.com/
 * @copyright Copyright © 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=&#39;total_page&#39;;
 const CSS_TOTAL_ROW=&#39;total_row&#39;;
  
 /**
 * @var string the text label for the first page button. Defaults to &#39;<< First&#39;.
 */
 public $totalPageLabel;
 /**
 * @var string the text label for the last page button. Defaults to &#39;Last >>&#39;.
 */
 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=&#39;末页&#39;;
    $this->nextPageLabel=&#39;下一页&#39;;
    $this->prevPageLabel=&#39;上一页&#39;;
    $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.=&#39; &#39;.($hidden ? self::CSS_HIDDEN_PAGE : self::CSS_SELECTED_PAGE);
 return &#39;<li class="&#39;.$class.&#39;">&#39;.CHtml::label($label,false).&#39;</li>&#39;;
 }
  
 /**
 * 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(&#39;application.components.views.LinkPager.pager&#39;).&#39;.css&#39;);
 Yii::app()->getClientScript()->registerCssFile($url);
 }
}
Copier après la connexion

Définir le style 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;
}
Copier après la connexion

Opération dans le contrôleur :

//分页操作
$criteria=new CDbCriteria;
$criteria->order=&#39;id DESC&#39;;
$criteria->select=array(&#39;id&#39;,&#39;uid&#39;,&#39;username&#39;,&#39;title&#39;,&#39;thumb&#39;,&#39;url&#39;,&#39;clicks&#39;,&#39;time&#39;,&#39;dateline&#39;,&#39;countfavorite&#39;,&#39;quality&#39;);
$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(
 &#39;select&#39;=>array(&#39;cname&#39;),
 &#39;condition&#39;=>&#39;id = &#39;.$id,
)); 
 
$this->render(&#39;application.views.video.list&#39;,array(
 &#39;array&#39;=>$array,
 &#39;arr&#39;=>$arr,
 &#39;result&#39;=>$result,
 &#39;list&#39;=>$list,
 &#39;pages&#39;=>$pages,
 &#39;title&#39;=>$title,
));
Copier après la connexion

Référencé dans vues/video/list.php :

<?php
 $this->widget(&#39;LinkPager&#39;, array(&#39;pages&#39; => $pages,));
 ?>
Copier après la connexion

Pour des exemples plus détaillés de pagination utilisant CLinkPager dans Yii et des articles connexes, veuillez faire attention au site Web PHP chinois !

Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn

Outils d'IA chauds

Undresser.AI Undress

Undresser.AI Undress

Application basée sur l'IA pour créer des photos de nu réalistes

AI Clothes Remover

AI Clothes Remover

Outil d'IA en ligne pour supprimer les vêtements des photos.

Undress AI Tool

Undress AI Tool

Images de déshabillage gratuites

Clothoff.io

Clothoff.io

Dissolvant de vêtements AI

AI Hentai Generator

AI Hentai Generator

Générez AI Hentai gratuitement.

Article chaud

R.E.P.O. Crystals d'énergie expliqués et ce qu'ils font (cristal jaune)
3 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Meilleurs paramètres graphiques
3 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Comment réparer l'audio si vous n'entendez personne
3 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌
WWE 2K25: Comment déverrouiller tout dans Myrise
4 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌

Outils chauds

Bloc-notes++7.3.1

Bloc-notes++7.3.1

Éditeur de code facile à utiliser et gratuit

SublimeText3 version chinoise

SublimeText3 version chinoise

Version chinoise, très simple à utiliser

Envoyer Studio 13.0.1

Envoyer Studio 13.0.1

Puissant environnement de développement intégré PHP

Dreamweaver CS6

Dreamweaver CS6

Outils de développement Web visuel

SublimeText3 version Mac

SublimeText3 version Mac

Logiciel d'édition de code au niveau de Dieu (SublimeText3)