Yii2分页

一:Yii2这是控制器中的分页,可以定义分页的条数:

controller中的用法:

public function actionList()

{
$model = new User();
$dataProvider = new ActiveDataProvider([
        'query' => $model->find();
        'pagination => [
                'pagesize' => '10',
         ]
      ]);
 
return $this->render('list', [
'model' => $model,
'dataProvider' => $dataProvider,
]);
}
 
view中的用法:
<?= GridView::widget([
        'dataProvider' => $dataProvider,
        //'filterModel' => $searchModel,
        'layout'=>'<div id="DataTables_Table_0_wrapper" class="dataTables_wrapper">
                                            {items}
                                            <div class="row-fluid">
                                              <div class="span12"><div class="dataTables_info" id="DataTables_Table_0_info">{summary}</div></div>
                                              <div class="span12 center"> 
                                                        <div class="dataTables_paginate paging_bootstrap pagination">
                                                          {pager}
                                                        </div>
                                                   </div>
                                               </div>
                                         </div>

                                          <div class="row">
             
                                         ',
                           
                            'pager'=>[
                                 'prevPageLabel'=>'← 上一页',    
                                 'nextPageLabel'=>'下一页 →', 
                            ],
       'columns' => [
            ['class' => 'yii\grid\SerialColumn'],
            ['class' => 'yii\grid\CheckboxColumn',
                'checkboxOptions' => function($model, $key, $index, $column) {
                    return ['value' => $model->id];
                }],
            ['attribute'=>'pics','value'=>function($model){
                $path = '/static/images/brand-head.jpg';
                if(!empty($model->pics_arr)){
                    $path = $model->pics_arr[0]['path'];
                }
                return "<img src='$path' width=75 height=75>";
            },'format'=>'html'],
            'name',
            ['label'=>'品牌', 'attribute' => 'name_zh',  'value' => 'brand.name_zh'],
            ['label'=>'类目', 'attribute' => 'catename',  'value' => 'category.name'],
            [
                'attribute' => 'status',
                'label' => '状态',
                'value'=>function($model){
                       return $model->status_text;
                 },
                'filter' => \common\models\ProductBase::get_status(),
            ],

            ['attribute'=>'storage_time','format'=>['date', 'php:Y-m-d']],
             ['label'=>'更多操作', 'format' => 'raw',  'value' => function($model){
                                    return  "<a class='btn btn-success' href='".Url::to(['product-base/view','id'=>$model->id])."' alt='查看'>
                                                 <i class='icon-zoom-in'></i>  
                                             </a>
                                             <a class='btn btn-info' href='".Url::to(['product-base/update','id'=>$model->id])."' alt='修改'>
                                                 <i class='icon-edit'></i>  
                                             </a>
                                             <a class='btn btn-danger' href='".Url::to(['product-base/delete','id'=>$model->id])."' alt='删除'>
                                                 <i class='icon-trash'></i>  
                                             </a>
                                             ";
                                }],
            [
                'label' => '更多操作',
                'format'=>'raw',
                'value' => function($model){
                    return Html::a('店铺商品', ['product/index','id' => $model->id], ['title' => '店铺商品','class'=>'btn btn-info btn-setting']);
                }
            ],
        ],
    ]); ?>
需要注意的几个关键词:
layout  {items} {summary} {pager}
 

二:这应该是一种原生的写法

Controller文件中

文件头先导入Pagination类:

use yii\data\Pagination;
具体的action处,这么用:

  public function actionIndex()
  {
    $query = News::find()
      ->where(['news_type' => 1])
      ->orderBy('published_on DESC, id DESC');
    $countQuery = clone $query;
    $pages = new Pagination([
      'totalCount' => $countQuery->count(),
      'pageSize'   => 2,
    ]);
    $models = $query->offset($pages->offset)
      ->limit($pages->limit)
      ->all();

    return $this->render('index', [
        'models' => $models,
        'pages'  => $pages,
    ]);
  }

View文件中

页头处导入LinkPager类:

use yii\widgets\LinkPager;
具体要显示的时候这么用

foreach ($models as $model) {
  // display $model here
}

// display pagination
echo LinkPager::widget([
  'pagination' => $pages,
]);

几个说明

  1. 只有当显示页面大于1页时,分页框才会出现。更直白一点,如果设置的pageSize是10,而数据库只有5条记录,则分页框不会出现。只有当记录数为11条或者更多,分页框才会出现出来。
  2. pageSize如果没有设置,默认是20,参阅yii\data\Pagination的 $defaultPageSize 属性。
  3. 生成的分页导航条是左对齐的,要想居中对齐,在外边包一层 <div class="text-center">...</div> 即可

转自:http://www.yiichina.com/tutorial/481

 

posted @ 2015-08-06 22:40  tiandi2050  阅读(515)  评论(0编辑  收藏  举报