yii2 分页类源码分析
1,yii2的分页类在yii\data\pagination,该类继承object类,所以有很多属性都可以使用。
2,控制器编写
<?php
namespace app\controllers;
use Yii;
use yii\web\Controller;
use app\models\Works;
use yii\data\Pagination;
class TestController extends Controller
{
public function actionIndex()
{
$data = Works::find();//生成数据对象
$pages = new Pagination(['totalCount' =>$data->count(), 'pageSize' => '10']);
$model = $data->offset($pages->offset)->limit($pages->limit)->all();//$pages->offset是调用了分页类下的getoffset()
,$pages->limit同理是调用了分页类下的getlimit(),这些事object下魔术方法,__set,__get的作用。
return $this->renderPartial('index', [
'model' => $model,
'pages' => $pages,
]);
}
分析:分页类继承object类,那么$pages->offset的调用会触发object下的__get方法,变相调用分页类下的getoffset()
3,编写视图
<?php
use yii\widgets\LinkPager;
foreach($model as $key=>$val){
echo $val['act_id'];
}
echo LinkPager::widget(['pagination' => $pages,'nextPageLabel'=>'下一页','nextPageLabel'=>'上一页',
'firstPageLabel'=>'首页','lastPageLabel'=>'尾页']);
?>
注:在分页类视图小组件里,有很多属性,用来配置分页类的展示效果