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

12 篇文章 0 订阅

在使用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
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值