yii2 分页类源码分析
yii2 分页类源码分析
1,yii2的分页类在yiidatapagination,该类继承object类,所以有很多属性都可以使用。
2,控制器编写
<?php
namespace appcontrollers;
use Yii;
use yiiwebController;
use appmodelsWorks;
use yiidataPagination;
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 yiiwidgetsLinkPager;
foreach($model as $key=>$val){
echo $val["act_id"];
}
echo LinkPager::widget(["pagination" => $pages,"nextPageLabel"=>"下一页","nextPageLabel"=>"上一页",
"firstPageLabel"=>"首页","lastPageLabel"=>"尾页"]);
?>
注:在分页类视图小组件里,有很多属性,用来配置分页类的展示效果