实例化一个分页类,$array是从数据表内读数据的类方法:
1 |
|
设置当前页码:
1 |
|
从URL获取当前页码: (ZF Dream )
1 |
|
把分页内容发到视图:
1 |
|
当然视图那里必须有$this->paginator接收,象这样:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 |
|
下面是几种页码样式: (ZF Dream )
All:显示所有页;
Elastic:Google式,页码范围会根据用户当前页而扩展或缩小;
Jumping:页码最后页之后会显示第一页;
Sliding:Yahoo式,当前页会放在页码中间,这是默认样式。
当然,paginationControl也可以不在视图中设置,而是写在控制器中:
1 2 3 4 5 6 7 8 9 10 |
|
官方手册 提供了几种页码模板的视图写法,偷懒的人可以直接复制过来用:
(1)Search pagination,效果如下:
(2)Item pagination,效果如下:
(3)Dropdown pagination,效果就是个下拉框选页码
下面是页码模板视图中可以使用的一些占位符,你要写自己的页码模板时会有用,写法是$this->first:
值 | 类型 | 解释 |
first | integer | 第一页的页码 |
firstItemNumber | integer | 当前页上第一条记录是整个记录集的第几条 |
firstPageInRange | integer | 第一个显示出的页码(各页码样式不同) |
current | integer | 当前页码 |
currentItemCount | integer | 本页上的记录有几条 |
itemCountPerPage | integer | 每页上最多可以显示几条记录 |
last | integer | 最后一页的页码 |
lastItemNumber | integer | 当前页上最后一条记录是整个记录集的第几条 |
lastPageInRange | integer | 最后一个显示出的页码(各页码样式不同) |
next | integer | 下一页的页码 |
pageCount | integer | 一共多少页 |
pagesInRange | array | 显示在网页上的页码数组(各页码样式不同) |
previous | integer | 上一页的页码 |
totalItemCount | integer | 一共有几条记录 |
下面是Paginator类的一些方法: (ZF Dream )
1、设置当前页码(默认是1)
1 |
|
2、设置每页显示的最大数量(默认是10)
1 |
|
3、设置页码里显示多少页(默认为10页)
1 |
|
注意:大多数时候这个数字会有用,但是不同的页码样式会有不同的效果,比如Elastic会把这个数字作为起始值
4、设置视图,方便调用
1 |
|
这里$view就是当前视图的对象。
×××××××××××××××××××××××××××××××××
zend分页是按照同用sql来设计的(limit不考虑),所以为了提高分页的效率,不应该将这个数组放入zend_paginator的count中计算(几千万数据就傻了),所以应该使用
$paginator = new Zend_Paginator(new Zend_Paginator_Adapter_Null(/**数量*/);
$paginator->setItemCountPerPage($pageSize)
->setCurrentPageNumber($pageId)
->setPageRange($pageRange);
1.读数据库的count(*)
2.$paginator = new Zend_Paginator(new Zend_Paginator_Adapter_Null(/**数量*/);
3.按limit读数据库表(即0,10->十条)
4.前台显示
分页是假的 数据也是假的 就能提高读取的速度 提高分页的效率!