Yii分页用法实例详解
下面我总结了在Yii常用的一些yii分页方式与实例代码,这里有普通分页与ajax实现分页,希望此文章对大家会有所帮助。 第一种:CListView分页 针对对象形式的数据分页Controller: 代码如下:order = 'news_id DESC'; $criteria->condition = 'user_id = 1'; $dataProvider = new CActiveDataProvider('News',array( $this->render('view',array( 第二种:CLinkPager 针对数组形式的数据分页Controller:
代码如下:$criteria = new CDbCriteria(); $count = News::model()->count($criteria); $pages->pageSize = 10; $this->render('index',array('list' => $list,'pages' => $pages)); View: 代码如下: 第三种: DAO实现分页.Controller层: 代码如下:db->createCommand($sql)->query(); $pages=new CPagination($result->rowCount); $pages->pageSize=2; $pages->applyLimit($criteria); $result=Yii::app()->db->createCommand($sql." LIMIT :offset,:limit"); $result->bindValue(':offset',$pages->currentPage*$pages->pageSize); $result->bindValue(':limit',$pages->pageSize); $posts=$result->query(); $this->render('report',array( 'posts'=>$posts, 'pages'=>$pages, )); } View层: 代码如下: $row["sumrate"]));?> " ?> widget('CLinkPager',array('pages'=>$pages)); ?> 优点: DAO效率高; 缺点: view层需要自己写一些样式,稍显麻烦一点 第四种:widget实现分页model层: 代码如下: /* * 统计功能: 统计每日的运费 */ public function statistics() { $criteria = new CDbCriteria; $criteria->select = 'remitdate,sum(rate) AS dayrate'; $criteria->group = 'remitdate'; return new CActiveDataProvider(get_class($this),array( 'criteria'=>$criteria, 'sort'=>array( // 表头设置点击排序的字段 'attributes'=>array( 'remitdate', 'dayrate'=>array( 'asc'=>'dayrate', 'desc'=>'dayrate DESC', ) ), 'defaultOrder'=>'remitdate desc', ), )); } Controller层: 代码如下:unsetAttributes(); // clear any default values $this->render('report',array( 第五种:Ajax分页YII中ajax分页有多种实现方法,比较传统的就是在view中写JS来实现,大概的就是这样: 在view中js大概逻辑是这样 代码如下: isAjaxRequest) {
$this->renderPartial('_comments',array(
'model' => $model,
'comments' => $comments,//在局部视图中foreach得到每条数据
'pages' => $pages,
));
Yii::app()->end();
}
后来发现YII中的CListview更方便,封装了分页,foreach显示list,还支持数据排序。具体的可以在YII的API手册中发掘。使用CListview是默认ajax分页的,使用方法如下:
controller中:
代码如下:order = '`create_time` DESC';
$dataProvider = new CActiveDataProvider('Comments',array(
'pagination'=>array(
'pageSize'=>Yii::app()->params['commentsPerPage'],//设置分页条数以确定取出数据的条数
),
'criteria'=>$criteria,
));
$this->render('comments',
'dataProvider' => $dataProvider,
));
然后在view中:
代码如下:widget('zii.widgets.CListView',array(
'dataProvider'=>$dataProvider,
'itemView'=>'_comments',
//'ajaxUpdate'=> false,//这样就不会AJAX翻页
'pager' => array(//pager 的配置信息。默认为 希望本文所述对大家基于Yii框架的PHP程序设计有所帮助。 (编辑:安卓应用网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |