本文链接:https://www.cnblogs.com/alanabc/p/9407193.html
当一次要在一个页面上显示很多数据时, 通常需要将其分成几部分, 每个部分都包含一些数据列表并且一次只显示一部分。 这些部分在网页上被称为 分页。
见 Yii Framework 官方网站网址:
官方案例和网上大多数的例程都是在控制器(Controller)中使用分页(Pagination),这里提供一个在模型(Model)中使用的例程。至于选用哪个,看实际情况决定,我这里是为了方便分割代码逻辑。
准备工作(数据库)
我已经部署好了 Yii2,现在数据库中有一个数据表叫做 order,存放有订单(数据字段略)。
模型 Model
根据 Yii 的命名规则,在 models 文件夹中新建 Order.php
文件,内容和注释如下:
pagination; } /** * 从Order数据表中查询所有条目,并以id字段为基准,进行降序排列输出 * @return mixed */ public function getAll() { // 预查询,此时还没有执行。where()条件查询、orderBy()排序等都应该放在这里 $query = Order::find()->orderBy(['id' => SORT_DESC]); // 获取能够查询到的数据条目数量(这就是条件查询等语句要放在上一行代码的原因),但是还没有执行查询 $count = $query->count(); // 构造分页对象 $this->pagination = new Pagination(['totalCount' => $count]); // 使用分页对象填充limit语句,并获得数据(此时才真正执行数据库查询) return $query->offset($this->pagination->offset) ->limit($this->pagination->limit) ->asArray() ->all(); }}
控制器 Controller
控制器主要控制数据输入输出,需要把上面模型中的数据当作参数传递给视图(View)。在 controllers 文件夹中创建你的控制器类,我这里直接使用 Yii2 Basic版原有的 SiteController.php
getAll(); // 在这里把模型中的分页对象$pagination作为参数pagination传递给视图 return $this->render('orderList', [ 'data' => $data, 'pagination' => $model->getPagination() ]); }}
视图 View
根据 Yii2 的命名规则,在view/site 文件夹内新建视图文件 orderList.php
,其内容如下,主要是获得控制器传过来的参数并渲染
订单流水号 | 收款方 | 付款方 | 付款金额 | 付款时间 | 操作 |
---|---|---|---|---|---|
暂时没有数据 |
上面代码中的 echo LinkPager::widget(['pagination' => $pagination]);
就把分页按钮给输出了,默认每页20条数据,点击页码就可以输出当页的数据,js 代码什么的都不需要自己动手写。至于样式,当然是自己写 css 咯。