相關(guān)關(guān)鍵詞
關(guān)于我們
最新文章
- PHP中opcode緩存簡(jiǎn)單用法分析
- thinkPHP控制器變量在模板中的顯示方法示例
- PHP move_uploaded_file() 函數(shù)(將上傳的文件移動(dòng)到新位置)
- dirname(__FILE__)的含義和應(yīng)用說(shuō)明
- thinkPHP5框架實(shí)現(xiàn)分頁(yè)查詢功能的方法示例
- PHP中單雙號(hào)與變量
- PHP獲得當(dāng)日零點(diǎn)時(shí)間戳的方法分析
- Laravel ORM對(duì)Model::find方法進(jìn)行緩存示例詳解
- PHP讀寫文件高并發(fā)處理操作實(shí)例詳解
- 【CLI】利用Curl下載文件實(shí)時(shí)進(jìn)度條顯示的實(shí)現(xiàn)
thinkPHP5使用laypage分頁(yè)插件實(shí)現(xiàn)列表分頁(yè)功能

一、背景
在使用thinkPHP框架做項(xiàng)目的時(shí)候,經(jīng)常會(huì)遇到對(duì)列表的內(nèi)容進(jìn)行分頁(yè)。thinkPHP框架中自帶了分頁(yè)功能,但是有缺陷。這個(gè)缺陷是每次返回每頁(yè)數(shù)據(jù)給頁(yè)面時(shí)需要重新加載頁(yè)面所需要的JS、CSS等資源。如果頁(yè)面包含的JS過(guò)多、過(guò)大,會(huì)增加流量壓力。因此,我們使用laypage插件。每次使用ajax請(qǐng)求獲取每頁(yè)的數(shù)據(jù)就可以了,不需要重復(fù)加載頁(yè)面。
二、分頁(yè)流程
如下圖所示:
流程說(shuō)明:
1) 調(diào)研App.php中的函數(shù),該函數(shù)調(diào)用fetch函數(shù)。fetch函數(shù)渲染list.html.
2) list.html 調(diào)用獲取總頁(yè)數(shù)的函數(shù),并得到總頁(yè)數(shù)。
3) 獲取第一頁(yè)數(shù)據(jù)。
4)初始化laypage分頁(yè)插件。
5)點(diǎn)擊頁(yè)碼,觸發(fā)分頁(yè)查詢。
三、實(shí)現(xiàn)分頁(yè)功能相關(guān)的代碼
1、App.php Controller的代碼
//fetch渲染頁(yè)面 public function index() { return $this->fetch('list'); } //根據(jù)頁(yè)面?zhèn)魅氲捻?yè)碼查詢數(shù)據(jù) public function getPage() { <span style="color:#FF0000;">// 獲取頁(yè)面?zhèn)魅氲捻?yè)碼 </span> $nowpage = input("page"); //每頁(yè)顯示10條數(shù)據(jù) $limits = 10; $app = new appInfo(); $page_info = $app->limit(($nowpage * $limits), $limits)->select(); // ajax 分頁(yè)輸出 $info = ['pageinfo'=>$page_info,'nowpage'=>$nowpage,'nowpage'=>$nowpage]; return json($info); } //獲取所有頁(yè)數(shù) public function getAllPage(){ try{ $count = appInfo::count(); $limits = 10; // 計(jì)算總頁(yè)面 $allpage = ceil($count / $limits); $info =['allpage'=>$allpage]; }catch (\Exception $e){ abort(500,$e->getMessage(),['result'=>TopsecGWErrer::TOPSEC_GW_ERR_NO_UNKNOWN]); } return json($info); }