Yii分页方法(翻页方法)搜集

来源:互联网 发布:计算机专业知乎 编辑:程序博客网 时间:2024/05/22 02:26

在使用Yii Framework框架时,经常会用到Yi分页方法。

 

1、使用Yii中的CdbCriteria进行查询时实现翻页采用CPagination类:

在controller中的查询代码如下:

        $criteria = new CDbCriteria;

        $criteria -> addCondition("uid =:uid ");        //添加查询条件

        $criteria -> params[':uid'] = $UID;              //绑定查询条件的参数

 

        $count= user::model()->count($criteria);    //统计查询结果集中记录总数
        $pager= new CPagination($count);            //实例化CPagination类
        $pager ->pageSize = 10;                          //设置一页显示记录数
        $pager->pageVar = 'p';                            //自定义URL中页码的参数,可以不设置

        $pager->applyLimit($criteria);                  //将结果集进行过滤处理

 

以上就是在controller中最简洁的设置,如果对于翻页有特殊要求可以通过Yii手册查询CPagination类来进行具体设置。

下面是在view中的代码:

  <?php
          $this->widget('CLinkPager',array(
                            'header'=>'',
                            'firstPageLabel' => '首页',
                            'lastPageLabel' => '末页',
                            'prevPageLabel' => '上一页',
                            'nextPageLabel' => '下一页',
                            'pages' => $PAGE,
                            'maxButtonCount'=>5,
                            )
                            );
    ?>

2、自定义分页

'defaultOrder'=>array('title' => false), false是升序,true是倒叙

使用CPagination呈现相关信息到页码. 当数据需要渲染到多页时,我们可能使用去呈现信息,诸如itemCount, pageSize, currentPage,等等. 这些信息被传递到pagers

controller中代码如下:

$sql = "SELECT * FROM USER";
$data = Yii::app()->db->createCommand($sql)->queryAll();
$count = count($data);

$pages = new CPagination($count);             
$pages->pageSize = 4;
//$pages->setCurrentPage(2);
$pdata =Yii::app()->db->createCommand($sql." LIMIT :offset,:limit");
$pdata->bindValue(':offset', $pages->currentPage*$pages->pageSize);//$pages->getOffset();
$pdata->bindValue(':limit', $pages->pageSize);//$pages->getLimit();
$info = $pdata->queryAll();

将变量传递到view中,在view中写入下面代码:

   <?php
                $this->widget('CLinkPager',array(
                'header'=>'',
                'firstPageLabel' => '首页',
                'lastPageLabel' => '末页',
                'prevPageLabel' => '上一页',
                'nextPageLabel' => '下一页',
                'pages' => $pages,   
                'maxButtonCount'=>13   //分页的按钮个数
                )
                );
                ?>

3.使用SQL查询进行分页:

controller代码如下:

public function actionSQL(){
    $count = Yii::app()->db->createCommand('SELECT COUNT(*) FROM film')->queryScalar();
    $sql = 'SELECT film_id,title FROM film';
    $dataProvider=new CSqlDataProvider($sql,array(
        'keyField'=>'film_id',  //sql in select table column default id
        'totalItemCount'=>$count,
        'sort'=>array(
            'attributes'=>array('title'), //sql table columns
            'defaultOrder'=>array('title' => true),
        ),
        'pagination'=>array(
            'pageSize'=>100,
        ),
    ));
    $this->render('index', array(
        'dataProvider' => $dataProvider,
    ));

}

view中代码如下:

<?php foreach($dataProvider->data as $film):?>
< ?php echo $film->title?>
< ?php endforeach?>
< ?php $this->widget('CLinkPager',array(
'pages'=>$dataProvider->pagination))?>

0 0
原创粉丝点击