ZenTaoPHP框架的分頁解決方案
分頁對于基于數據庫的應用來講,是很常見的一個問題。最新的zentaophp框架中,提供了內置的分頁功能。使用如下:
更多開源詳情:http://www.zentao.net
我們以查詢用戶列表為例,在應用中建立一個user的模塊,在其中的control文件中,定義一個list方法,來完成分頁的功能:
一、control中的list方法接受三個參數:recTotal, recPerPage, pageID,變量名是固定的。
function list($recTotal, $recPerPage, $pageID)
{
/* 加載分頁類,并生成pager對象。*/
$this->app->loadClass('pager', $static = true);
$pager = new pager($recTotal, $recPerPage, $pageID);
/* 將分頁類傳給model,進行分頁。*/
$users = $this->user->getList($pager);
}
二、model中定義getList方法,其參數為pager
function getList($pager)
{
return $this->dao->select(*)->from('user')->page($pager)->fetchAll();
}
三、control中調用$pager->get(),獲得分頁的鏈接,賦值給模板,顯示。
$this->assign('pager', $page->get());
然后在模板中,直接顯示$pager就好了。
在寫這個分頁過程中,需要解決的問題就是記錄總數的計算。這個功能是內置在dao中完成的。首次調用分頁的時候,recTotal變量為空的,dao會自動將查詢語句中的條件部分作為新的查詢語句,獲得count(*)的值,并據此產生limit部分的語句。后續的鏈接中,會把recTotal參數寫入,就不用再查數據庫了。
本文由用戶 蠶小豆 自行上傳分享,僅供網友學習交流。所有權歸原作者,若您的權利被侵害,請聯系管理員。
轉載本站原創文章,請注明出處,并保留原始鏈接、圖片水印。
本站是一個以用戶分享為主的開源技術平臺,歡迎各類分享!