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

Yii 1.x 簡易分頁實作:CPagination 與 CLinkPager 完整範例

     編輯:PHP 相關知識

控制器動作

<?php
public function actionPage() {
    $criteria = new CDbCriteria();
    // 可加入條件:$criteria->condition = 'status=1';
    
    $count = Archives::model()->count($criteria);
    
    $pages = new CPagination($count);
    $pages->pageSize = 10;           // 每頁筆數
    $pages->applyLimit($criteria);   // 自動套用 LIMIT/OFFSET
    
    $models = Archives::model()->findAll($criteria);
    
    $this->render('archives', [
        'models' => $models,
        'pages' => $pages,
    ]);
}
?>

視圖檔案 (archives.php)

<ul>
<?php foreach ($models as $model): ?>
    <li><?php echo CHtml::encode($model->title); ?></li>
<?php endforeach; ?>
</ul>

<?php
$this->widget('CLinkPager', [
    'pages' => $pages,
    'header' => '',
    'prevPageLabel' => '上一頁',
    'nextPageLabel' => '下一頁',
    'firstPageLabel' => '首頁',
    'lastPageLabel' => '末頁',
    'cssFile' => 'css/pager.css', // 自訂樣式檔
    'maxButtonCount' => 10,       // 顯示頁碼按鈕數
]);
?>

關鍵類別說明

類別用途
CPagination分頁邏輯:總筆數、頁大小、當前頁、LIMIT/OFFSET 計算
CLinkPager分頁 UI 元件:產生頁碼連結、上下頁、首末頁

常用屬性配置

  • pageSize:每頁筆數(預設 10)
  • pageVar:查詢字串參數名(預設 'page')
  • route:指定分頁連結路由(預設當前控制器/動作)
  • params:分頁連結額外查詢參數

進階:AJAX 分頁

<?php
$this->widget('CLinkPager', [
    'pages' => $pages,
    'ajaxUpdate' => '#content-container', // 目標容器 ID
    'ajaxType' => 'GET',
]);
?>

Yii2 差異說明

  • Yii2 使用 yii\data\Pagination + yii\widgets\LinkPager
  • API 相似但命名空間不同,applyLimit() 改為 $query->limit($pagination->limit)->offset($pagination->offset)
  • Yii2 支援 yii\data\ActiveDataProvider 整合 ActiveRecord
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved