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

Yii 框架分頁功能實現詳解:CPagination 與 CLinkPager 實戰

     編輯:PHP 相關知識

Yii 框架分頁功能實現詳解:CPagination 與 CLinkPager 實戰

Yii 內置 CPagination 處理分頁邏輯,CLinkPager 渲染分頁導航。本文提供控制器與視圖完整代碼示例。

一、控制器代碼

public function actionTest() {
    $criteria = new CDbCriteria();
    $criteria->order = 'id DESC';
    
    $count = User::model()->count($criteria); // 總記錄數
    $pager = new CPagination($count);
    $pager->pageSize = 10;                    // 每頁條數
    $pager->applyLimit($criteria);            // 應用 LIMIT 子句
    
    $userList = User::model()->findAll($criteria);
    
    $this->render('test', array(
        'list' => $userList,
        'pages' => $pager,                    // 傳遞分頁對象給視圖
    ));
}

二、視圖代碼

<?php foreach ($list as $o): ?>
    <?php echo $o->username . '<br/>'; ?>
    <?php echo $o->id . '<br/>'; ?>
<?php endforeach; ?>

<?php $this->widget('CLinkPager', array(
    'header' => '',
    'firstPageLabel' => '首頁',
    'lastPageLabel' => '末頁',
    'prevPageLabel' => '上一頁',
    'nextPageLabel' => '下一頁',
    'pages' => $pages,                        // 控制器傳遞的 $pager
    'maxButtonCount' => 13,                   // 最大顯示頁碼按鈕數
)); ?>

三、核心屬性說明

類/屬性作用
CPagination::pageSize每頁顯示記錄數
CPagination::applyLimit()自動向 CDbCriteria 添加 LIMIT/OFFSET
CLinkPager::pages必須傳入 CPagination 實例
CLinkPager::maxButtonCount控制數字按鈕顯示數量,超出顯示省略號

四、常見問題

Q: 分頁 SQL 如何手寫?
A: 使用 LIMIT offset, pageSize,offset = (page-1)*pageSize。
Q: 如何實現三個公共方法?
A: 建議使用 AR 模型 + Gii 生成 CRUD,按資源類型關聯表,標簽單獨建表關聯。
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved