当前位置:首页 > CMS教程 > 其它CMS > 列表

yii分页组件用法实例分析

发布:smiling 来源: PHP粉丝网  添加日期:2021-07-02 11:00:16 浏览: 评论:0 

这篇文章主要介绍了yii分页组件用法,结合实例形式较为详细的分析了yii分页组件的调用及具体的分页显示实现技巧,需要的朋友可以参考下。

本文实例讲述了yii分页组件用法,分享给大家供大家参考,具体如下:

该案例使用时,分页类在yii框架中以组件的形式存在于components中。

action代码如下:

  1. public function actionIndex(){ 
  2.   $user=User::model(); 
  3.   //分页的使用 
  4.   $count=$user->count(); //获取总页数 
  5.   $pagesize=3; //每一页显示的记录条数 
  6.   $page=new Page($count,$pagesize); 
  7.   $sql="select * from {{user}} $page->limit"
  8.   $info=$user->findAllBySql($sql); 
  9.   $show_page=$page->fpage(); 
  10.   $this->renderPartial("index",array("info"=>$info,'show_page'=>$show_page)); 

在view页面,遍历info即可获取信息,输出show_page即可显示分页列表等信息。

现附上page.php代码如下:

  1. <?php 
  2. /** 
  3.  * 分页类,以组件形式存在于componnets文件中 
  4.  */ 
  5. class Page { 
  6.   private $total//数据表中总记录数 
  7.   private $listRows//每页显示行数 
  8.   private $limit
  9.   private $uri
  10.   private $pageNum//页数 
  11.   private $config=array('header'=>"个记录""prev"=>"上一页""next"=>"下一页""first"=>"首 页""last"=>"尾 页"); 
  12.   private $listNum=8; 
  13.   /* 
  14.    * $total 
  15.    * $listRows 
  16.    */ 
  17.   public function __construct($total$listRows=10, $pa=""){ 
  18.    $this->total=$total
  19.    $this->listRows=$listRows
  20.    $this->uri=$this->getUri($pa); 
  21.    $this->page=!emptyempty($_GET["page"]) ? $_GET["page"] : 1; 
  22.    $this->pageNum=ceil($this->total/$this->listRows); 
  23.    $this->limit=$this->setLimit(); 
  24.   } 
  25.   private function setLimit(){ 
  26.    return "Limit ".($this->page-1)*$this->listRows.", {$this->listRows}"
  27.   } 
  28.   private function getUri($pa){ 
  29.    $url=$_SERVER["REQUEST_URI"].(strpos($_SERVER["REQUEST_URI"], '?')?'':"?").$pa
  30.    $parse=parse_url($url); 
  31.    if(isset($parse["query"])){ 
  32.     parse_str($parse['query'],$params); 
  33.     unset($params["page"]); 
  34.     $url=$parse['path'].'?'.http_build_query($params); 
  35.    } 
  36.    return $url
  37.   } 
  38.   function __get($args){ 
  39.    if($args=="limit"
  40.     return $this->limit; 
  41.    else 
  42.     return null; 
  43.   } 
  44.   private function start(){ 
  45.    if($this->total==0) 
  46.     return 0; 
  47.    else 
  48.     return ($this->page-1)*$this->listRows+1; 
  49.   } 
  50.   private function end(){ 
  51.    return min($this->page*$this->listRows,$this->total); 
  52.   } 
  53.   private function first(){ 
  54.       $html=''
  55.    if($this->page==1) 
  56.     $html.=''
  57.    else 
  58.     $html.=" <a href='{$this->uri}&page=1'>{$this->config["first"]}</a> "
  59.    return $html
  60.   } 
  61.   private function prev(){ 
  62.       $html=''
  63.    if($this->page==1) 
  64.     $html.=''
  65.    else 
  66.     $html.=" <a href='{$this->uri}&page=".($this->page-1)."'>{$this->config["prev"]}</a> "
  67.    return $html
  68.   } 
  69.   private function pageList(){ 
  70.    $linkPage=""
  71.    $inum=floor($this->listNum/2); 
  72.    for($i=$inum$i>=1; $i--){ 
  73.     $page=$this->page-$i
  74.     if($page<1) 
  75.      continue
  76.     $linkPage.=" <a href='{$this->uri}&page={$page}'>{$page}</a> "
  77.    } 
  78.    $linkPage.=" {$this->page} "
  79.    for($i=1; $i<=$inum$i++){ 
  80.     $page=$this->page+$i
  81.     if($page<=$this->pageNum) 
  82.      $linkPage.=" <a href='{$this->uri}&page={$page}'>{$page}</a> "
  83.     else 
  84.      break
  85.    } 
  86.    return $linkPage
  87.   } 
  88.   private function next(){ 
  89.       $html=''
  90.    if($this->page==$this->pageNum) 
  91.     $html.=''
  92.    else 
  93.     $html.=" <a href='{$this->uri}&page=".($this->page+1)."'>{$this->config["next"]}</a> "
  94.    return $html
  95.   } 
  96.   private function last(){ 
  97.       $html=''
  98.    if($this->page==$this->pageNum) 
  99.     $html.=''
  100.    else 
  101.     $html.=" <a href='{$this->uri}&page=".($this->pageNum)."'>{$this->config["last"]}</a> "
  102.    return $html
  103.   } 
  104.   private function goPage(){ 
  105.    return ' <input type="text" onkeydown="javascript:if(event.keyCode==13){var page=(this.value>'.$this->pageNum.')?'.$this->pageNum.':this.value;location=\''.$this->uri.'&page=\'+page+\'\'}" value="'.$this->page.'" style="width:25px"><input type="button" value="GO" onclick="javascript:var page=(this.previousSibling.value>'.$this->pageNum.')?'.$this->pageNum.':this.previousSibling.value;location=\''.$this->uri.'&page=\'+page+\'\'"> '
  106.   } 
  107.   function fpage($display=array(0,1,2,3,4,5,6,7,8)){ 
  108.    $html[0]=" 共有<b>{$this->total}</b>{$this->config["header"]} "
  109.    $html[1]=" 每页显示<b>".($this->end()-$this->start()+1)."</b>条,本页<b>{$this->start()}-{$this->end()}</b>条 "
  110.    $html[2]=" <b>{$this->page}/{$this->pageNum}</b>页 "
  111.    $html[3]=$this->first(); 
  112.    $html[4]=$this->prev(); 
  113.    $html[5]=$this->pageList(); 
  114.    $html[6]=$this->next(); 
  115.    $html[7]=$this->last(); 
  116.    $html[8]=$this->goPage(); 
  117.    $fpage=''
  118.    foreach($display as $index){ 
  119.     $fpage.=$html[$index]; 
  120.    } 
  121.    return $fpage
  122.   } 

希望本文所述对大家基于yii框架的PHP程序设计有所帮助。

Tags: yii分页组件

分享到: