thinkphp 中的分頁類在我看來還是很強大的,使用起來也是很方便的。只要傳總的條數,和每頁顯示的條數,還有樣式配置數組,你就可以輕松顯示分頁,而且可以方便的調整前台頁數代碼的樣式。
下面介紹一下一些配置參數:
public $firstRow; // 起始行數
public $listRows; // 列表每頁顯示行數
public $parameter; // 分頁跳轉時要帶的參數
public $totalRows; // 總行數
public $totalPages; // 分頁總頁面數
public $rollPage = 11;// 分頁欄每頁顯示的頁數
public $lastSuffix = true; // 最後一頁是否顯示總頁數
private $p = 'p'; //分頁參數名
private $url = ''; //當前鏈接URL
private $nowPage = 1;//默認第一頁
我們一般新建對象的時候為:
$Page=new \Think\Page($count,25);// 實例化分頁類 傳入總記錄數和每頁顯示的記錄數(25)
$show= $Page->show();// 分頁顯示輸出
$count 為總的頁數,25為每頁顯示的記錄數。
這裡沒有進行任何配置輸出的效果也是默認的,我們可以進行一些調整,比如:
$Page->rollPage = 5,這樣就最多顯示5個分頁數目,
$Page->lastSuffix=false;//這個參數是讓他最後一頁不顯示總的數目。因為我們可以通過header來顯示總的數目。
// 分頁顯示定制
private $config = array(
'header' => '共 %TOTAL_ROW% 條記錄',
'prev' => '<<',
'next' => '>>',
'first' => '1...',
'last' => '...%TOTAL_PAGE%',
'theme' => '%FIRST% %UP_PAGE% %LINK_PAGE% %DOWN_PAGE% %END%',
);
這裡是分頁樣式默認的數組,我們可以通過攢地新的值來覆蓋它們,
通過
public function setConfig($name,$value) {
if(isset($this->config[$name])) {
$this->config[$name] = $value;
}
}
這個函數我們可以把這些默認覆蓋,比如theme裡面沒有header的信息,我們可以加入%HEADER% 來讓他顯示出來。而header的內容也可以通過一個key為header的數組來覆蓋。其他的參數都是類似的,說明一下,theme裡面我們可以自己調整header的位置,而不是固定在前面或者後面,用起來很靈活。
下面說明一下,thinkphp這個分頁類是如何通過配置文件來修改它的樣式的。
$page_str = str_replace(
array('%HEADER%', '%NOW_PAGE%', '%UP_PAGE%', '%DOWN_PAGE%', '%FIRST%', '%LINK_PAGE%', '%END%', '%TOTAL_ROW%', '%TOTAL_PAGE%'),
array($this->config['header'], $this->nowPage, $up_page, $down_page, $the_first, $link_page, $the_end, $this->totalRows, $this->totalPages),
$this->config['theme']);
這個str_replace可以說是分頁類的一個設計精華之處,首先前面將類的各個屬性的值分開賦值,最後調用這個函數,讀取config中的theme來表示要顯示的內容,而其中的變量是通過按照對應的數組來替換的,就實現了將config中的theme(可以子集覆蓋默認的theme)來控制如何顯示分頁及內容順序。
最後就是thinkphp將常用的前一頁,後一頁,第一頁,當前頁都加了默認class,所以我們引入一個css文件就可以改變他的樣式了。