yii2中分页的实现 [ 2.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页时,分页框才会出现。更直白一点,如果设置的pageSize是10,而数据库只有5条记录,则分页框不会出现。只有当记录数为11条或者更多,分页框才会出现出来。
- pageSize如果没有设置,默认是20,参阅yii\data\Pagination的
$defaultPageSize
属性。 - 生成的分页导航条是左对齐的,要想居中对齐,在外边包一层
<div class="text-center">...</div>
即可。
maccliu Shanghai
注册时间:2015-07-16
最后登录:2015-09-02
在线时长:5小时15分
最后登录:2015-09-02
在线时长:5小时15分
- 粉丝1
- 金钱115
- 威望20
- 积分365
共 1 条评论
这不就是权威指南中的代码么