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 | 控制數字按鈕顯示數量,超出顯示省略號 |
LIMIT offset, pageSize,offset = (page-1)*pageSize。