ZendFramework2开发-列表分页功能
来源:互联网 发布:支持java的虚拟主机 编辑:程序博客网 时间:2024/06/01 08:00
在ZendFramework2中,可以方便地使用\Zend\Paginator\Paginator类来实现分页功能。
\Zend\Paginator\Paginator类需要使用\zend\Paginator\Adapter\DbSelect对象从数据库获取数据(如果要从数组获取数据,就用\Zend\Paginator\Adapter\ArrayAdapter)。
use Zend\Db\Sql\Select;use Zend\Paginator\Adapter\DbSelect;use Zend\Paginator\Paginator;//创建Zend\Paginator\Paginator对象$select = new Select('user');//为user表创建查询对象$resultSetPrototype = new ResultSet();//创建查询结果集原型对象$resultSetPrototype->setArrayObjectPrototype(new User());$paginatorAdapter = new DbSelect( //创建数据源对象 $select, //查询对象 $this->tableGateway->getAdapter(),//数据表适配器对象 $resultSetPrototype//查询结果集原型对象);$paginator = new Paginator($paginatorAdapter);//用数据源对象初始化创建分页器对象
\Zend\Paginator\Paginator每次从数据库获取数据的时候,不是一次获取所有行,而是只获取当前页的行。
假设配置的路由为/user/list/xxx,如下:
'routes' => array( 'user' => array( 'type' => 'segment', 'options' => array( 'route' => '/user[/][:action][/:id]', 'constraints' => array( 'action' => '[a-zA-Z][a-zA-Z0-9_-]*', 'id' => '[0-9]+', ), 'defaults' => array( 'controller' => 'User\Controller\User', 'action' => 'list', ), ), ),),
那么控制器可以这样从url中获取当前页:
$pagenum = (int)$this->params()->fromRoute('id', 1);
然后,直接使用\Zend\Paginator\Paginator对象获取数据源交给View:
$paginator = $this->getUserTable()->getPaginator();$paginator->setCurrentPageNumber($pagenum);//设置当前页$paginator->setItemCountPerPage(15);//设置每页显示的页数 return new ViewModel(array( 'paginator' => $paginator));
之后,在list.phtml中就可以直接显示当前页了:
<?php foreach ($this->paginator as $user) : ?> <tr> <td><?php echo $this->escapeHtml($user->name);?></td> </tr><?php endforeach; ?>
可以通过\Zend\Paginator\Paginator对象的以下一些属性获取上一页、下一页、第一页、最后一页等等:
$this->first;//第一页页码$this->previous;//前一页页码$this->current;//当前页码$this->next;//下一页页码$this->last;//最后一页页码$this->pageCount;//总页数
分页控制栏可以这样输出:
echo $this->paginationControl( $this->paginator, 'sliding',//界面风格,有"All"、"Elastic"、"Jumping"、"Sliding"四种风格可选 array('user/partial/paginator.phtml', 'User'),//paginator.phtml是界面的html代码片段 array( 'route' => 'user' );
在model/User/view目录下创建文件“paginator.phtml”,输入以下代码,即可创建一个Slider风格的分页控制栏:
<?php if ($this->pageCount): ?> <div> <ul class="pagination"> <!-- Previous page link --> <?php if (isset($this->previous)): ?> <li> <a href="<?php echo $this->url($this->route, array('action' => 'list', 'id' => $this->previous)); ?>"> << </a> </li> <?php else: ?> <li class="disabled"> <a href="#"> << </a> </li> <?php endif; ?> <!-- Numbered page links --> <?php foreach ($this->pagesInRange as $page): ?> <?php if ($page != $this->current): ?> <li> <a href="<?php echo $this->url($this->route, array('action' => 'list', 'id' => $page));?>"> <?php echo $page; ?> </a> </li> <?php else: ?> <li class="active"> <a href="#"><?php echo $page; ?></a> </li> <?php endif; ?> <?php endforeach; ?> <!-- Next page link --> <?php if (isset($this->next)): ?> <li> <a href="<?php echo $this->url($this->route, array('action' => 'list', 'id' => $this->next)); ?>"> >> </a> </li> <?php else: ?> <li class="disabled"> <a href="#"> >> </a> </li> <?php endif; ?> </ul> </div> <?php endif; ?>
0 0
- ZendFramework2开发-列表分页功能
- zendframework2
- Rails 列表加分页功能
- bboss taglib 分页/列表标签功能介绍
- magento产品列表排序、分页功能原理
- dede 实现首页列表分页功能
- 利用VUE框架,实现列表分页功能
- thinkPHP5 使用laypage分页插件实现列表分页功能
- ajax开发:分页查询功能
- ZendFramework2开发-网站用户的密码加密和身份鉴定
- bboss taglib 列表/分页的排序功能介绍
- 【Struts2】用Struts2实现列表显示和分页功能
- 分页之:下拉列表选择页码的回显功能
- Android头部停留及分页加载功能整合列表
- PHPCMS V9 自定义列表分页功能实现方法
- php利用redis实现分页列表,新增,删除功能
- Android开发,仿钉钉审核列表功能实现
- 列表分页
- Eclipse 常用插件
- GUID
- 常用打包软件总结
- C#中使用GUID
- 搞定用户搜索意图,网站轻松排名
- ZendFramework2开发-列表分页功能
- Android开发规范
- 表情识别的流程简介
- 常见设备的GUID
- poj-1330
- Android布局大全
- 安卓学习之XML布局
- mysql表的清空、删除和修改操作详解
- iOS 如何选择delegate、notification、KVO?