当前位置:首页 > PHP教程 > Zend > 列表

Zend Framework分页类用法详解

发布:smiling 来源: PHP粉丝网  添加日期:2021-07-20 22:02:23 浏览: 评论:0 

这篇文章主要介绍了Zend Framework分页类用法,结合实例形式详细分析了Zend Framework分页类的实现代码,相关功能与使用技巧,需要的朋友可以参考下,本文实例讲述了Zend Framework分页类用法,分享给大家供大家参考,具体如下:

1、分页类Pagination.php,最好是把这个类放在Zend目录下

  1. class XY_Pagination 
  2.   private $_navigationItemCount = 10; //导航栏显示导航总页数 
  3.   private $_pageSize = null; //每页项目数 
  4.   private $_align = "right"//导航栏显示位置 
  5.   private $_itemCount = null; //总项目数 
  6.   private $_pageCount = null; //总页数 
  7.   private $_currentPage = null; //当前页 
  8.   private $_front = null; //前端控制器 
  9.   private $_PageParaName = "page"//页面参数名称 
  10.   private $_firstPageString = "|<<"//导航栏中第一页显示的字符 
  11.   private $_nextPageString = ">>"//导航栏中前一页显示的字符 
  12.   private $_previousPageString = "<<"//导航栏中后一页显示的字符 
  13.   private $_lastPageString = ">>|"//导航栏中最后一页显示的字符 
  14.   private $_splitString = " | "
  15.          //页数字间的间隔符 / 
  16.   public function __construct($itemCount$pageSize
  17.   { 
  18.     if(!is_numeric($itemCount) || (!is_numeric($pageSize))) 
  19.     throw new Exception("Pagination Error:not Number"); 
  20.     $this->_itemCount = $itemCount
  21.     $this->_pageSize = $pageSize
  22.     $this->_front = Zend_Controller_Front::getInstance(); 
  23.     $this->_pageCount = ceil($itemCount/$pageSize); //总页数 
  24.     $page = $this->_front->getRequest()->getParam($this->_PageParaName); 
  25.     if(emptyempty($page) || (!is_numeric($page))) //为空或不是数字,设置当前页为1 
  26.     { 
  27.       $this->_currentPage = 1; 
  28.     } 
  29.     else 
  30.     { 
  31.       if($page < 1) 
  32.         $page = 1; 
  33.       if($page > $this->_pageCount) 
  34.         $page = $this->_pageCount; 
  35.       $this->_currentPage = $page
  36.     } 
  37.   } 
  38.   /** 
  39.    * 返回当前页 
  40.    * @param int 当前页 
  41.    */ 
  42.   public function getCurrentPage() 
  43.   { 
  44.     return $this->_currentPage; 
  45.   } 
  46.   /** 
  47.    * 返回导航栏目 
  48.    * @return string 导航html class="PageNavigation" 
  49.    */ 
  50.   public function getNavigation() 
  51.   { 
  52.     $navigation = ''
  53.     $pageCote = ceil($this->_currentPage / ($this->_navigationItemCount - 1)) - 1; //当前页处于第几栏分页 
  54.     $pageCoteCount = ceil($this->_pageCount / ($this->_navigationItemCount - 1)); //总分页栏 
  55.     $pageStart = $pageCote * ($this->_navigationItemCount -1) + 1; //分页栏中起始页 
  56.     $pageEnd = $pageStart + $this->_navigationItemCount - 1; //分页栏中终止页 
  57.     if($this->_pageCount < $pageEnd
  58.     { 
  59.       $pageEnd = $this->_pageCount; 
  60.     } 
  61.         $navigation .= "总共:{$this->_itemCount}条 {$this->_pageCount}页\n"
  62.     if($pageCote > 0) //首页导航 
  63.     { 
  64.       $navigation .= '$this->_firstPageString "; 
  65.     } 
  66.     if($this->_currentPage != 1) //上一页导航 
  67.     { 
  68.       $navigation .= '$this->_previousPageString "; 
  69.     } 
  70.     while ($pageStart <= $pageEnd//构造数字导航区 
  71.     { 
  72.       if($pageStart == $this->_currentPage) 
  73.       { 
  74.         $navigation .= "$pageStart".$this->_splitString; 
  75.       } 
  76.       else 
  77.       { 
  78.         $navigation .= '$pageStart".$this->_splitString; 
  79.       } 
  80.       $pageStart++; 
  81.     } 
  82.     if($this->_currentPage != $this->_pageCount) //下一页导航 
  83.     { 
  84.       $navigation .= ' $this->_nextPageString "; 
  85.     } 
  86.     if($pageCote < $pageCoteCount-1) //未页导航 
  87.     { 
  88.       $navigation .= '$this->_lastPageString "; 
  89.     } 
  90.     //添加直接导航框 
  91.     //$navigation .= ''; 
  92.     //2008年8月27号补充输入非正确页码后出现的错误——begin 
  93.     $navigation .= ' '
  94.     //2008年8月27号补充输入非正确页码后出现的错误——end 
  95.     $navigation .= " "
  96.     return $navigation
  97.   } 
  98.   /** 
  99.    * 取得导航栏显示导航总页数 
  100.    * 
  101.    * @return int 导航栏显示导航总页数 
  102.    */ 
  103.   public function getNavigationItemCount() 
  104.   { 
  105.     return $this->_navigationItemCount; 
  106.   } 
  107.   /** 
  108.    * 设置导航栏显示导航总页数 
  109.    * 
  110.    * @param int $navigationCount:导航栏显示导航总页数 
  111.    */ 
  112.   public function setNavigationItemCoun($navigationCount
  113.   { 
  114.     if(is_numeric($navigationCount)) 
  115.     { 
  116.       $this->_navigationItemCount = $navigationCount
  117.     } 
  118.   } 
  119.   /** 
  120.    * 设置首页显示字符 
  121.    * @param string $firstPageString 首页显示字符 
  122.    */ 
  123.   public function setFirstPageString($firstPageString
  124.   { 
  125.     $this->_firstPageString = $firstPageString
  126.   } 
  127.   /** 
  128.    * 设置上一页导航显示字符 
  129.    * @param string $previousPageString:上一页显示字符 
  130.    */ 
  131.   public function setPreviousPageString($previousPageString
  132.   { 
  133.     $this->_previousPageString = $previousPageString
  134.   } 
  135.   /** 
  136.    * 设置下一页导航显示字符 
  137.    * @param string $nextPageString:下一页显示字符 
  138.    */ 
  139.   public function setNextPageString($nextPageString
  140.   { 
  141.     $this->_nextPageString = $nextPageString
  142.   } 
  143.   /** 
  144.    * 设置未页导航显示字符 
  145.    * @param string $nextPageString:未页显示字符 
  146.    */ 
  147.   public function setLastPageString($lastPageString
  148.   { 
  149.     $this->_lastPageString = $lastPageString
  150.   } 
  151.   /** 
  152.    * 设置导航字符显示位置 
  153.    * @param string $align:导航位置 
  154.    */ 
  155.   public function setAlign($align
  156.   { 
  157.     $align = strtolower($align); 
  158.     if($align == "center"
  159.     { 
  160.       $this->_align = "center"
  161.     }elseif($align == "right"
  162.     { 
  163.       $this->_align = "right"
  164.     }else 
  165.     { 
  166.       $this->_align = "left"
  167.     } 
  168.   } 
  169.   /** 
  170.    * 设置页面参数名称 
  171.    * @param string $pageParamName:页面参数名称 
  172.    */ 
  173.   public function setPageParamName($pageParamName
  174.   { 
  175.     $this->_PageParaName = $pageParamName
  176.   } 
  177.   /** 
  178.    * 获取页面参数名称 
  179.    * @return string 页面参数名称 
  180.    */ 
  181.   public function getPageParamName() 
  182.   { 
  183.     return $this->_PageParaName; 
  184.   } 
  185.   /** 
  186.    * 生成导航链接地址 
  187.    * @param int $targetPage:导航页 
  188.    * @return string 链接目标地址 
  189.    */ 
  190.   private function createHref($targetPage = null) 
  191.   { 
  192.     $params = $this->_front->getRequest()->getParams(); 
  193.         $module = $params["module"]; 
  194.     $controller = $params["controller"]; 
  195.     $action = $params["action"]; 
  196.     $targetUrl = $this->_front->getBaseUrl()."/$module/$controller/$action"
  197.     foreach ($params as $key => $value
  198.     { 
  199.       if($key != "controller" && $key != "module" && $key != "action" && $key != $this->_PageParaName) 
  200.       { 
  201.         $targetUrl .= "/$key/$value"
  202.       } 
  203.     } 
  204.     if(isset($targetPage)) //指定目标页 
  205.       $targetUrl .= "/$this->_PageParaName/$targetPage"
  206.     else 
  207.       $targetUrl .= "/$this->_PageParaName/"
  208.     return $targetUrl
  209.   } 
  210. ?> 

2、在indexController.php中的indexController Function里面调用:

  1. require_once 'Zend/Pagination.php'
  2. $Users = new Users(); 
  3. //$rows = $Users->getAdapter()->fetchOne("select count(*) from users where `role`!='admin'"); //recorde count 
  4. $rows = $Users->fetchAll("`role`!='admin'")->count(); //查询记录总数 
  5. $rowsPerPage = 5; //perPage recordes 
  6. $curPage = 1; 
  7. if($this->_request->getParam('page')) 
  8.     $curPage = $this->_request->getParam('page'); 
  9. //search data and display 
  10. $this->view->users = $Users->fetchAll("`role`!='admin'",'id desc',$rowsPerPage,($curPage-1)*$rowsPerPage)->toArray(); 
  11. $Pager = new XY_Pagination($rows,$rowsPerPage); 
  12. $this->view->pagebar = $Pager->getNavigation(); 

3、在view中调用分页更简单了。

pagebar?>

或者在smarty模板情况下

<{$pagebar}>

Tags: Zend分页类 Framework

分享到: