19. Yii 2.0 数据分页

来源:互联网 发布:毛新宇是不是装的知乎 编辑:程序博客网 时间:2024/06/05 17:58
这里以 Yii 2.0 基础版为例,来介绍数据分页。

操作分页的类文件为 /basic/vendor/yiisoft/yii2/data/Pagination.php

首先,在 /basic/entity 目录中新建一个 User.php 文件,用于查询分页数据,代码如下:
  1  2  3  4  5  6  7  8  9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28
<?php
namespace app\entity;
use yii\data\Pagination;
class User {
public static function getList() {
try {
$db = \Yii::$app->db;
// 1. 获取符合条件的记录总数
$count = $db->createCommand('SELECT COUNT(*) AS count from {{%user}}')
->queryOne();
if ($count) {
// 2. 根据记录总数,实例化pagination对象
$pages = new Pagination(['totalCount'=>$count['count'], 'defaultPageSize'=>10]);
// 3. 根据pagination对象的offset和limit属性,查询记录列表
$list = $db->createCommand('SELECT * FROM {{%user}} LIMIT '.$pages->offset.','.$pages->limit)
->queryAll();
$ret = ['success'=>true, 'pages'=>$pages, 'list'=>$list];
} else {
throw new \Exception('查询失败!');
}
} catch (\Exception $e) {
$ret = ['success'=>false, 'msg'=>$e->getMessage()];
}
return $ret;
}
}
 来自CODE的代码片
snippet_file_0.php
其次,在控制器层新建一个控制器文件 PageController.php,用于测试分页,代码如下:
  1  2  3  4  5  6  7  8  9 10 11 12 13 14 15 16 17 18 19 20
<?php
namespace app\controllers;
use yii\base\Controller;
use app\entity\User;
class PageController extends Controller {
function actionTest()
{
$res = User::getList();
if ($res['success']==false) {
die($res['msg']);
} else {
// 4. 渲染视图,并传递变量
return $this->renderPartial('test', ['list'=>$res['list'], 'pages'=>$res['pages']]);
}
}
}
 来自CODE的代码片
snippet_file_0.php
然后,在视图层 /basic/views 目录下新建一个文件夹 page,再在 /basic/views/page 目录中新建一个视图文件 test.php,代码如下:
 1 2 3 4 5 6 7
<?php
// 5. 显示记录列表
var_dump($list);
echo '<br>';
// 6. 显示分页导航
echo \yii\widgets\LinkPager::widget(['pagination'=>$pages]);
 来自CODE的代码片
snippet_file_0.php
最后,在浏览器中访问 http://basic.com/page/test,查看分页的效果。
原创粉丝点击