当前位置:首页 > CMS教程 > 其它CMS > 列表

YII2框架中分页组件的使用方法示例

发布:smiling 来源: PHP粉丝网  添加日期:2022-02-20 09:22:53 浏览: 评论:0 

本文实例讲述了YII2框架中分页组件的使用方法,分享给大家供大家参考,具体如下:

当数据过多,无法一页显示时,我们经常会用到分页组件,YII2中已经帮我们封装好了分页组件。

首先我们创建操作数据表的AR模型:

  1. <?php 
  2.  
  3. namespace app\models; 
  4.  
  5. use yii\db\ActiveRecord; 
  6.  
  7. class MyUser extends ActiveRecord 
  8. { 
  9.   public static function tableName() 
  10.   { 
  11.     return '{{%user}}'; 
  12.   } 
  13. } 

然后创建分页的控制器:

  1. <?php 
  2.  
  3. namespace app\controllers; 
  4.  
  5. use YII; 
  6. use app\models\MyUser; 
  7. use yii\data\Pagination; 
  8. use yii\web\Controller; 
  9.  
  10. class IndexController extends Controller 
  11. { 
  12.   public function actionIndex() 
  13.   { 
  14.     $name = YII::$app->request->get('name', ''); 
  15.     $where = '1=1 '; 
  16.     $param = []; 
  17.  
  18.     //如果查询条件很多,可以按这种方式,拼where条件 
  19.     if (!emptyempty($name)) { 
  20.       $where .= "AND name=:name"; 
  21.       $param = array_merge($param, [':name' => $name]); 
  22.     } 
  23.  
  24.     //设置分页大小,为了演示,我写成了2 
  25.     $pageSize = 2; 
  26.     $user = MyUser::find()->where($where, $param); 
  27.  
  28.     //创建分页组件 
  29.     $page = new Pagination([ 
  30.       //总的记录条数 
  31.       'totalCount' => $user->count(), 
  32.       //分页大小 
  33.       'pageSize' => $pageSize, 
  34.       //设置地址栏当前页数参数名 
  35.       'pageParam' => 'p', 
  36.       //设置地址栏分页大小参数名 
  37.       'pageSizeParam' => 'pageSize', 
  38.     ]); 
  39.  
  40.     //获取数据 
  41.     $data = $user->orderBy('id DESC') 
  42.       ->offset($page->offset) 
  43.       ->limit($page->limit) 
  44.       ->asArray() 
  45.       ->all(); 
  46.  
  47.     return $this->renderPartial('index', [ 
  48.       'data' => $data, 
  49.       'page' => $page, 
  50.     ]); 
  51.   } 
  52. } 

最后就是显示数据分页:

  1. <!doctype html> 
  2. <html lang="zh-CN"> 
  3. <head> 
  4.   <meta charset="UTF-8"> 
  5.   <title>分页显示</title> 
  6.   <style> 
  7.     .page li { 
  8.       display: inline-block; 
  9.       border: 1px solid #ccc; 
  10.       border-radius: 3px; 
  11.       padding: 2px 3px; 
  12.     } 
  13.  
  14.     .page li.active a { 
  15.       font-weight: bold; 
  16.     } 
  17.  
  18.     .page li a { 
  19.       text-decoration: none; 
  20.     } 
  21.  
  22.     .page li a, .page li span { 
  23.       color: #666; 
  24.     } 
  25.   </style> 
  26. </head> 
  27. <body> 
  28.   <ul> 
  29.     <?php foreach ($data as $item): ?> 
  30.       <li><?php echo $item['id']; ?>    <?php echo $item['name']; ?></li> 
  31.     <?php endforeach; ?> 
  32.   </ul> 
  33.   <?php 
  34.   echo \yii\widgets\LinkPager::widget([ 
  35.     'pagination' => $page, 
  36.     'firstPageLabel' => '首页', 
  37.     'lastPageLabel' => '尾页', 
  38.     'nextPageLabel' => '下一页', 
  39.     'prevPageLabel' => '上一页', 
  40.     //设置class样式 
  41.     'options' => ['class' => 'page'], 
  42.   ]) ?> 
  43. </body> 
  44. </html> 

最后效果如下:

YII2框架中分页组件的使用方法示例

Tags: YII2分页组件

分享到: