Zend Framework分页类用法详解
发布:smiling 来源: PHP粉丝网 添加日期:2021-07-20 22:02:23 浏览: 评论:0
这篇文章主要介绍了Zend Framework分页类用法,结合实例形式详细分析了Zend Framework分页类的实现代码,相关功能与使用技巧,需要的朋友可以参考下,本文实例讲述了Zend Framework分页类用法,分享给大家供大家参考,具体如下:
1、分页类Pagination.php,最好是把这个类放在Zend目录下
- class XY_Pagination
- {
- private $_navigationItemCount = 10; //导航栏显示导航总页数
- private $_pageSize = null; //每页项目数
- private $_align = "right"; //导航栏显示位置
- private $_itemCount = null; //总项目数
- private $_pageCount = null; //总页数
- private $_currentPage = null; //当前页
- private $_front = null; //前端控制器
- private $_PageParaName = "page"; //页面参数名称
- private $_firstPageString = "|<<"; //导航栏中第一页显示的字符
- private $_nextPageString = ">>"; //导航栏中前一页显示的字符
- private $_previousPageString = "<<"; //导航栏中后一页显示的字符
- private $_lastPageString = ">>|"; //导航栏中最后一页显示的字符
- private $_splitString = " | ";
- //页数字间的间隔符 /
- public function __construct($itemCount, $pageSize)
- {
- if(!is_numeric($itemCount) || (!is_numeric($pageSize)))
- throw new Exception("Pagination Error:not Number");
- $this->_itemCount = $itemCount;
- $this->_pageSize = $pageSize;
- $this->_front = Zend_Controller_Front::getInstance();
- $this->_pageCount = ceil($itemCount/$pageSize); //总页数
- $page = $this->_front->getRequest()->getParam($this->_PageParaName);
- if(emptyempty($page) || (!is_numeric($page))) //为空或不是数字,设置当前页为1
- {
- $this->_currentPage = 1;
- }
- else
- {
- if($page < 1)
- $page = 1;
- if($page > $this->_pageCount)
- $page = $this->_pageCount;
- $this->_currentPage = $page;
- }
- }
- /**
- * 返回当前页
- * @param int 当前页
- */
- public function getCurrentPage()
- {
- return $this->_currentPage;
- }
- /**
- * 返回导航栏目
- * @return string 导航html class="PageNavigation"
- */
- public function getNavigation()
- {
- $navigation = '';
- $pageCote = ceil($this->_currentPage / ($this->_navigationItemCount - 1)) - 1; //当前页处于第几栏分页
- $pageCoteCount = ceil($this->_pageCount / ($this->_navigationItemCount - 1)); //总分页栏
- $pageStart = $pageCote * ($this->_navigationItemCount -1) + 1; //分页栏中起始页
- $pageEnd = $pageStart + $this->_navigationItemCount - 1; //分页栏中终止页
- if($this->_pageCount < $pageEnd)
- {
- $pageEnd = $this->_pageCount;
- }
- $navigation .= "总共:{$this->_itemCount}条 {$this->_pageCount}页\n";
- if($pageCote > 0) //首页导航
- {
- $navigation .= '$this->_firstPageString ";
- }
- if($this->_currentPage != 1) //上一页导航
- {
- $navigation .= '$this->_previousPageString ";
- }
- while ($pageStart <= $pageEnd) //构造数字导航区
- {
- if($pageStart == $this->_currentPage)
- {
- $navigation .= "$pageStart".$this->_splitString;
- }
- else
- {
- $navigation .= '$pageStart".$this->_splitString;
- }
- $pageStart++;
- }
- if($this->_currentPage != $this->_pageCount) //下一页导航
- {
- $navigation .= ' $this->_nextPageString ";
- }
- if($pageCote < $pageCoteCount-1) //未页导航
- {
- $navigation .= '$this->_lastPageString ";
- }
- //添加直接导航框
- //$navigation .= '';
- //2008年8月27号补充输入非正确页码后出现的错误——begin
- $navigation .= ' ';
- //2008年8月27号补充输入非正确页码后出现的错误——end
- $navigation .= " ";
- return $navigation;
- }
- /**
- * 取得导航栏显示导航总页数
- *
- * @return int 导航栏显示导航总页数
- */
- public function getNavigationItemCount()
- {
- return $this->_navigationItemCount;
- }
- /**
- * 设置导航栏显示导航总页数
- *
- * @param int $navigationCount:导航栏显示导航总页数
- */
- public function setNavigationItemCoun($navigationCount)
- {
- if(is_numeric($navigationCount))
- {
- $this->_navigationItemCount = $navigationCount;
- }
- }
- /**
- * 设置首页显示字符
- * @param string $firstPageString 首页显示字符
- */
- public function setFirstPageString($firstPageString)
- {
- $this->_firstPageString = $firstPageString;
- }
- /**
- * 设置上一页导航显示字符
- * @param string $previousPageString:上一页显示字符
- */
- public function setPreviousPageString($previousPageString)
- {
- $this->_previousPageString = $previousPageString;
- }
- /**
- * 设置下一页导航显示字符
- * @param string $nextPageString:下一页显示字符
- */
- public function setNextPageString($nextPageString)
- {
- $this->_nextPageString = $nextPageString;
- }
- /**
- * 设置未页导航显示字符
- * @param string $nextPageString:未页显示字符
- */
- public function setLastPageString($lastPageString)
- {
- $this->_lastPageString = $lastPageString;
- }
- /**
- * 设置导航字符显示位置
- * @param string $align:导航位置
- */
- public function setAlign($align)
- {
- $align = strtolower($align);
- if($align == "center")
- {
- $this->_align = "center";
- }elseif($align == "right")
- {
- $this->_align = "right";
- }else
- {
- $this->_align = "left";
- }
- }
- /**
- * 设置页面参数名称
- * @param string $pageParamName:页面参数名称
- */
- public function setPageParamName($pageParamName)
- {
- $this->_PageParaName = $pageParamName;
- }
- /**
- * 获取页面参数名称
- * @return string 页面参数名称
- */
- public function getPageParamName()
- {
- return $this->_PageParaName;
- }
- /**
- * 生成导航链接地址
- * @param int $targetPage:导航页
- * @return string 链接目标地址
- */
- private function createHref($targetPage = null)
- {
- $params = $this->_front->getRequest()->getParams();
- $module = $params["module"];
- $controller = $params["controller"];
- $action = $params["action"];
- $targetUrl = $this->_front->getBaseUrl()."/$module/$controller/$action";
- foreach ($params as $key => $value)
- {
- if($key != "controller" && $key != "module" && $key != "action" && $key != $this->_PageParaName)
- {
- $targetUrl .= "/$key/$value";
- }
- }
- if(isset($targetPage)) //指定目标页
- $targetUrl .= "/$this->_PageParaName/$targetPage";
- else
- $targetUrl .= "/$this->_PageParaName/";
- return $targetUrl;
- }
- }
- ?>
2、在indexController.php中的indexController Function里面调用:
- require_once 'Zend/Pagination.php';
- $Users = new Users();
- //$rows = $Users->getAdapter()->fetchOne("select count(*) from users where `role`!='admin'"); //recorde count
- $rows = $Users->fetchAll("`role`!='admin'")->count(); //查询记录总数
- $rowsPerPage = 5; //perPage recordes
- $curPage = 1;
- if($this->_request->getParam('page'))
- {
- $curPage = $this->_request->getParam('page');
- }
- //search data and display
- $this->view->users = $Users->fetchAll("`role`!='admin'",'id desc',$rowsPerPage,($curPage-1)*$rowsPerPage)->toArray();
- $Pager = new XY_Pagination($rows,$rowsPerPage);
- $this->view->pagebar = $Pager->getNavigation();
3、在view中调用分页更简单了。
pagebar?>
或者在smarty模板情况下
<{$pagebar}>
Tags: Zend分页类 Framework
相关文章
- ·zend framework 实例(2013-11-14)
- ·Zend Framework 配置与应用(2013-11-14)
- ·zend framework Invalid command RewriteEngine(2014-08-04)
- ·Zend Framework页面缓存实例(2021-03-02)
- ·zend framework框架中url大小写问题解决方法(2021-04-03)
- ·Zend Framework+smarty用法实例详解(2021-07-18)
- ·Zend Framework连接Mysql数据库实例分析(2021-07-18)
- ·Zend Framework缓存Cache用法简单实例(2021-07-18)
- ·Zend Framework入门知识点小结(2021-07-18)
- ·Zend Framework教程之Zend_Db_Table用法详解(2021-07-18)
- ·Zend Framework教程之Zend_Db_Table_Row用法实例分析(2021-07-20)
- ·Zend Framework框架教程之Zend_Db_Table_Rowset用法实例分析(2021-07-20)
- ·Zend Framework实现多文件上传功能实例(2021-07-20)
- ·Zend Framework教程之Zend_Form组件实现表单提交并显示错误提示的方法(2021-07-20)
- ·Zend Framework实现将session存储在memcache中的方法(2021-07-20)
- ·Zend Framework框架路由机制代码分析(2021-07-20)
推荐文章
热门文章
最新评论文章
- 写给考虑创业的年轻程序员(10)
- PHP新手上路(一)(7)
- 惹恼程序员的十件事(5)
- PHP邮件发送例子,已测试成功(5)
- 致初学者:PHP比ASP优秀的七个理由(4)
- PHP会被淘汰吗?(4)
- PHP新手上路(四)(4)
- 如何去学习PHP?(2)
- 简单入门级php分页代码(2)
- php中邮箱email 电话等格式的验证(2)