当前位置:首页 > 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.   public static function tableName() 
  9.   { 
  10.     return '{{%user}}'
  11.   } 

然后创建分页的控制器:

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

最后就是显示数据分页:

  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分页组件

分享到: