首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> 網頁程式設計 >> PHP 程式設計 >> PHP 相關知識

ThinkPHP 分頁類完整使用指南

     編輯:PHP 相關知識

當留言板、文章列表等數據量增長時,分頁成為必需功能。本文以 ThinkPHP 3.1 為例,詳細講解框架內建 Page 類的控制器實例化、模板變量賦值、前端渲染全流程。

一、控制器層實現分頁邏輯

核心知識點

  1. count() 統計總記錄數
  2. Page 類實例化與參數配置
  3. limit() 限制查詢範圍
  4. show() 生成分頁 HTML 片段

完整控制器代碼

<?php
class MsgManageAction extends CommonAction {
    public function index() {
        // 1. 載入分頁類
        import('ORG.Util.Page'); // 對應 ThinkPHP/Extend/Library/ORG/Util/Page.class.php

        // 2. 取得總記錄數
        $count = M('board')->count();

        // 3. 實例化分頁對象:每頁 10 條
        $page = new Page($count, 10);

        // 4. 組裝 LIMIT 子句
        // $page->firstRow 當前頁起始偏移(第 1 頁為 0,第 2 頁為 10...)
        // $page->listRows 每頁條數(此處為 10)
        $limit = $page->firstRow . ',' . $page->listRows;

        // 5. 查詢當前頁數據
        $board = M('board')
            ->order('time DESC')
            ->limit($limit)
            ->select();

        // 6. 賦值給模板
        $this->board = $board;      // 數據列表
        $this->page  = $page->show(); // 分頁導航 HTML

        $this->display();
    }

    public function delete() {
        $id = I('id', '', 'intval');
        if (M('board')->delete($id)) {
            $this->success('刪除成功', U('index'));
        } else {
            $this->error('刪除失敗');
        }
    }
}
?>

補充說明:show() 是 3.1 新增的「內容解析輸出」方法,無需模板文件即可直接返回渲染後的 HTML 字串,適合 AJAX 回傳或動態模板場景。

二、模板層渲染分頁導航

模板文件:admin/Tpl/MsgManage/index.html

<!DOCTYPE html>
<html>
<head>
    <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
    <title>Message Board BackGround</title>
</head>
<body>
<table class="table" border="1">
    <tr>
        <th>ID</th>
        <th>發布者</th>
        <th>內容</th>
        <th>發布時間</th>
        <th>操作</th>
    </tr>
    <foreach name='board' item='b'>
    <tr>
        <td>{$b.id}</td>
        <td>{$b.username}</td>
        <td>{$b.content}</td>
        <td>{$b.time|date='y-m-d H:i',###}</td>
        <td><a href="{:U('admin.php/MsgManage/delete',array('id'=>$b['id'])),''}">刪除</a></td>
    </tr>
    </foreach>

    <!-- 分頁導航行 -->
    <tr>
        <td colspan='5' align='center'>
            {$page}
        </td>
    </tr>
</table>
</body>
</html>

關鍵點

  • colspan='5' 合併單元格使分頁居中顯示
  • {$page} 直接輸出控制器賦值的分頁 HTML(包含首頁、上一頁、頁碼、下一頁、尾頁等鏈接)
  • ThinkPHP 模板引擎自動解析 U() 生成完整 URL

三、進階客製化建議

  • 繼承 Page 類覆寫 show() 實現自定義樣式(如 Bootstrap 分頁)
  • 配置 $page->rollPage = 5 控制顯示頁碼數量
  • 設定 $page->setConfig('header', '筆記錄') 修改提示文字
  • 結合 AJAX 實現無刷新分頁:$page->ajaxReturn() 回傳 JSON
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved