您的位置:首页 > 编程语言 > PHP开发

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

2013-12-28 22:33 211 查看
在使用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))?>
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: