分頁(Pagination)

2018-02-24 15:40 更新

分頁

當(dāng)一次要在一個(gè)頁面上顯示很多數(shù)據(jù)時(shí),通過需要將其分為 幾部分,每個(gè)部分都包含一些數(shù)據(jù)列表并且一次只顯示一部分。這些部分在網(wǎng)頁上被稱為 分頁。

如果你使用?數(shù)據(jù)提供者?和?數(shù)據(jù)小部件?中之一, 分頁已經(jīng)自動(dòng)為你整理。否則,你需要?jiǎng)?chuàng)建 \yii\data\Pagination 對(duì)象為其填充數(shù)據(jù),例如 \yii\data\Pagination::$totalCount, \yii\data\Pagination::$pageSize 和 \yii\data\Pagination::$page,在 查詢中使用它并且填充到 \yii\widgets\LinkPager。

首先在控制器的動(dòng)作中,我們創(chuàng)建分頁對(duì)象并且為其填充數(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,
    ]);
}

其次在視圖中我們輸出的模板為當(dāng)前頁并通過分頁對(duì)象鏈接到該頁:

foreach ($models as $model) {
    // 在這里顯示 $model
}

// 顯示分頁
echo LinkPager::widget([
    'pagination' => $pages,
]);
以上內(nèi)容是否對(duì)您有幫助:
在線筆記
App下載
App下載

掃描二維碼

下載編程獅App

公眾號(hào)
微信公眾號(hào)

編程獅公眾號(hào)