Yii2.0的分类大致有两种,
第一种是调用自带的分页组件,以及渲染组件,
第二种则是半调用,仍然调用分页组件但可以自己渲染views页面
1.下面介绍一下 第一种 通过Activedataprovider 类分页的使用
use yii\data\ActiveDataProvider; //调用 ActiveDataProvider 类
use common\models\User;
public function actionList(){
$model = new User();
$dataProvider = new ActiveDataProvider([
'query' => $model->find(),
'pagination' => [
'pagesize' => '10',
]
]);
return $this->render('list', ['model' => $model, 'dataProvider' => $dataProvider]);
}
views代码
use yii\grid\GridView;
GridView::widget([
'dataProvider' => $dataProvider,
'columns' => [
'attribute', //attribute为字段的名称,开发时候根据自己的需要进行修改
[
'attribute' => 'create_time',
'format' => ['data', 'Y-m-d H:i:s'],
'options' => ['width' => '200']
],
['class' => 'yii\grid\ActionColumn', 'header' => '操作', 'headerOptions' => ['width' => '80']],
],
]);
2.第二种方式,在控制器中实例化分页对象。
use yii\data\Pagination;
public function actionList()
{
$curPage = Yii::$app->request->get('page',1); //获取当前页
$pageSize = 20; //设置每页显示条数
...
$pages = new Pagination(['totalCount' =>$count, 'pageSize' => $pageSize]);
...
return $this->render('list',['pages'=>$pages,'data'=>$data]);
}
解释一下, count是你通过查询条件获取的总的数据条数,例如: c o u n t 是 你 通 过 查 询 条 件 获 取 的 总 的 数 据 条 数 , 例 如 : count = Model::find()->where()->count();
data就是查询到的数据, d a t a 就 是 查 询 到 的 数 据 , pages则是分页实例化的对象。分别传递到views层
那么看下views层的list.php
use yii\widgets\LinkPager; //头部引入
然后将下面的代码拷贝入页面中希望分页显示的位置
<?=LinkPager::widget(['pagination' => $pages]);?>