maccliu 2015-07-22 23:25:04 9525次浏览 1条评论 6 5 0

Controller文件中

文件头先导入Pagination类:

use yii\data\Pagination;

具体的action处,这么用:

  public function actionIndex()
  {
    $query = News::find()
      ->where(['news_type' => 1])
      ->orderBy('published_on DESC, id DESC');
    $countQuery = clone $query;
    $pages = new Pagination([
      'totalCount' => $countQuery->count(),
      'pageSize'   => 2,
    ]);
    $models = $query->offset($pages->offset)
      ->limit($pages->limit)
      ->all();

    return $this->render('index', [
        'models' => $models,
        'pages'  => $pages,
    ]);
  }

View文件中

页头处导入LinkPager类:

use yii\widgets\LinkPager;

具体要显示的时候这么用

foreach ($models as $model) {
  // display $model here
}

// display pagination
echo LinkPager::widget([
  'pagination' => $pages,
]);

几个说明

  1. 只有当显示页面大于1页时,分页框才会出现。更直白一点,如果设置的pageSize是10,而数据库只有5条记录,则分页框不会出现。只有当记录数为11条或者更多,分页框才会出现出来。
  2. pageSize如果没有设置,默认是20,参阅yii\data\Pagination的 $defaultPageSize 属性。
  3. 生成的分页导航条是左对齐的,要想居中对齐,在外边包一层 <div class="text-center">...</div> 即可。
觉得很赞
您需要登录后才可以评论。登录 | 立即注册