?
本文檔使用 php中文網(wǎng)手冊 發(fā)布
當一次要在一個頁面上顯示很多數(shù)據(jù)時,通過需要將其分為 幾部分,每個部分都包含一些數(shù)據(jù)列表并且一次只顯示一部分。這些部分在網(wǎng)頁上被稱為 分頁。
如果你使用?數(shù)據(jù)提供者?和?數(shù)據(jù)小部件?中之一, 分頁已經(jīng)自動為你整理。否則,你需要創(chuàng)建 \yii\data\Pagination 對象為其填充數(shù)據(jù),例如 \yii\data\Pagination::$totalCount, \yii\data\Pagination::$pageSize 和 \yii\data\Pagination::$page,在 查詢中使用它并且填充到 \yii\widgets\LinkPager。
首先在控制器的動作中,我們創(chuàng)建分頁對象并且為其填充數(shù)據(jù):
function actionIndex(){
$query = Article::find()->where(['status' => 1]);
$countQuery = clone $query;
$pages = new Pagination(['totalCount' => $countQuery->count()]);
$models = $query->offset($pages->offset)
->limit($pages->limit)
->all();
return $this->render('index', [
'models' => $models,
'pages' => $pages,
]);
}
其次在視圖中我們輸出的模板為當前頁并通過分頁對象鏈接到該頁:
foreach?($models?as?$model)?{
? ? //?在這里顯示?$model
}
//?顯示分頁echo?LinkPager::widget([
? ? 'pagination'?=>?$pages,
]);