smart 2017-11-26 11:07:28 7207次浏览 1条评论 4 3 0

1. controller中

use yii\data\Pagination;

$model = User::find();
$model = $model->where(['jihuo' => 7]); 
$pages = new Pagination(['totalCount' => $model->count()]);
$models = $model->offset($pages->offset)
    ->limit($pages->limit)
    ->all();
return $this->render('index', [
    'models' => $models,
    'pages' => $pages,
]);

1. 视图中

<?= yii\widgets\LinkPager::widget([
    'pagination' => $pager,
]) ?>

这只是最原始的版本

1. 修改视图中分类样式

默认是这样的:
909d21bec4-yii2page1.png

  • 可以修改分页样式
    <?= LinkPager::widget([ 
      'pagination' => $pages, 
      'nextPageLabel' => '下一页', // 修改上下页按钮
      'prevPageLabel' => '上一页', 
      //'nextPageLabel' => false, // 不显示上下页按钮
      //'prevPageLabel' => false, 
      'firstPageLabel' => '首页', // 设置首页尾页按钮
      'lastPageLabel' => '尾页', 
      'hideOnSinglePage' => false, // 当你数据不足2页时,分页默认不显示,但你可以让他显示出来
      'maxButtonCount' => 5,    // 分页 页码默认显示10页,不过你可以自由设置,比如显示5页
      'options' => ['class' => 'm-pagination'], // 可以给分页添加class 然你你想换个颜色,居个中啊
    ]); ?>
    

    2. 修改控制器中Pagination组件

    $pages = new Pagination([ 
      'totalCount' => $totalCount, 
      'pageSize' => 5,  // 分页默认条数是20条,但你可以随意设置 例如 5条
    ]);
    

到这基本结束了,但大招才刚刚开始酝酿

  • 在做项目的时候,遇到上万条的数据分页时,刷新页面超级慢,这边聊一下解决方法
// 在控制器中做分页时
$model = User::find();
//分页
$pager = new Pagination(['totalCount' => $query->count();]);
// 这边我的理解是先实例化好分页的20条数据,但不查出来
$model = $model->offset($pager->offset)->limit($pager->limit);
$query = User::find()->select('*')->from(['t1' => User::tableName(), 't2' => $model])->where('t1.id=t2.id');
$bankData = $query->all();// 这样查出来的速度就非常快

// 贴一下sql原型,方便理解
SELECT t1.* FROM user t1, (SELECT id FROM user LIMIT 0,20 ) t2 WHERE t1.id=t2.id;

原文参考

觉得很赞
您需要登录后才可以评论。登录 | 立即注册