19. Yii 2.0 数据分页

本文介绍如何在Yii2.0基础版中实现数据分页功能,包括创建User类进行数据查询,PageController控制器处理分页逻辑及渲染视图,最终通过LinkPager组件展示分页导航。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

这里以 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,查看分页的效果。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值