Zend_Paginator分頁學習心得

實例化一個分頁類,$array是從數據表內讀數據的類方法: 

?
1
$paginator = new Zend_Paginator( new Zend_Paginator_Adapter_Array( $array ));

設置當前頁碼: 

?
1
$paginator ->setCurrentPageNumber( $page );


從URL獲取當前頁碼: (ZF Dream

?
1
$paginator ->setCurrentPageNumber( $this ->_getParam( 'page' ));

把分頁內容發到視圖: 

?
1
$this ->view->paginator = $paginator ;

當然視圖那裏必須有$this->paginator接收,象這樣: 

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
<html>
<body>
<h1>Example</h1>
<?php if ( count ( $this ->paginator)): ?>
<ul>
<?php foreach ( $this ->paginator as $item ): ?>
   <li><?php echo $item ; ?></li>
<?php endforeach ; ?>
</ul>
<?php endif ; ?>
 
<?php echo $this ->paginationControl( $this ->paginator,
                                     'Sliding' , //頁碼樣式
                                     'my_pagination_control.phtml' ); //頁碼模板?>
</body>
</html>

下面是幾種頁碼樣式: (ZF Dream

All:顯示所有頁;

Elastic:Google式,頁碼範圍會根據用戶當前頁而擴展或縮小;

Jumping:頁碼最後頁之後會顯示第一頁;

Sliding:Yahoo式,當前頁會放在頁碼中間,這是默認樣式。 

當然,paginationControl也可以不在視圖中設置,而是寫在控制器中: 

?
1
2
3
4
5
6
7
8
9
10
Zend_Paginator::setDefaultScrollingStyle( 'Sliding' );
 
Zend_View_Helper_PaginationControl::setDefaultViewPartial(
 
     'my_pagination_control.phtml'
 
);
 
 
$paginator ->setView( $view );

官方手冊 提供了幾種頁碼模板的視圖寫法,偷懶的人可以直接複製過來用:

(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
$paginator ->setCurrentPageNumber( $page );

2、設置每頁顯示的最大數量(默認是10) 

?
1
$paginator ->setItemCountPerPage( $num );

3、設置頁碼裏顯示多少頁(默認爲10頁) 

?
1
$paginator ->setPageRange( $page );

注意:大多數時候這個數字會有用,但是不同的頁碼樣式會有不同的效果,比如Elastic會把這個數字作爲起始值

4、設置視圖,方便調用 

?
1
$paginator ->setView( $view );

這裏$view就是當前視圖的對象。

 

 

×××××××××××××××××××××××××××××××××

zend分頁是按照同用sql來設計的(limit不考慮),所以爲了提高分頁的效率,不應該將這個數組放入zend_paginator的count中計算(幾千萬數據就傻了),所以應該使用

 

1.讀數據庫的count(*)

2.$paginator = new Zend_Paginator(new Zend_Paginator_Adapter_Null(/**數量*/);
3.按limit讀數據庫表(即0,10->十條)

4.前臺顯示

分頁是假的 數據也是假的 就能提高讀取的速度 提高分頁的效率!

 

 

 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章