本文实例讲述了Yii列表定义与使用分页方法。分享给大家供大家参考,具体如下:
方法一:控制器定义
function actionIndex(){ $criteria = new CDbCriteria(); $count=Article::model()->count($criteria); $pages=new CPagination($count); // 返回前一页 $pages->pageSize=10; $pages->applyLimit($criteria); $models = Post::model()->findAll($criteria); $this->render('index', array( 'models' => $models, 'pages' => $pages )); }
视图定义:
<?php foreach($models as $model): ?> // 显示一个模型 <?php endforeach; ?> // 显示分页 <?php $this->widget('CLinkPager', array( 'pages' => $pages, )) ?>
方法二:控制器定义:
public function actionIndex() { $dataProvider=new CActiveDataProvider('News',array( 'criteria'=>array( 'condition'=>'status=1', 'order'=>'create_time DESC', 'with'=>array('author'), ), 'pagination'=>array( 'pageSize'=>20, ), )); $this->render('index',array( 'dataProvider'=>$dataProvider, )); }
视图文件:
<?php $this->widget('zii.widgets.CListView', array( 'dataProvider'=>$dataProvider, 'itemView'=>'_view', )); ?>
方法三:视图文件
<?php $this->widget('zii.widgets.grid.CGridView', array( 'id'=>'news-grid', 'dataProvider'=>$model->search(), 'filter'=>$model, 'template'=>'{items}{summary}{pager}', <span style="white-space:pre"> </span> 'pager'=>array( 'class'=>'CLinkPager', 'header'=>'分页:', 'prevPageLabel'=>'上一页', 'nextPageLabel'=>'下一页', ), <span style="white-space:pre"> </span> 'summaryText'=>'页数:{pages}/{page}页', <span style="white-space:pre"> </span>'columns'=>array( 'id', array('name'=>'title', 'htmlOptions'=>array('width'=>'20%'), 'value'=>'mb_substr($data->title,0,10,"utf-8")', ), array('name'=>'content', 'htmlOptions'=>array('width'=>'20%'), 'value'=>'mb_substr(strip_tags($data->content),0,10,"utf-8")', ), array('name'=>'type', 'value'=>'News::model()->getNewsType($data->type)', ), 'user', array('name'=>'status', 'value'=>'News::model()->getNewsStatus($data->status)', ), array( 'class'=>'CButtonColumn', ), ), ));
数据模型类:
public function search() { $criteria=new CDbCriteria; $criteria->compare('id',$this->id); $criteria->compare('title',$this->title,true); $criteria->compare('content',$this->content,true); $criteria->compare('type',$this->type); $criteria->compare('user',$this->user,true); $criteria->compare('status',$this->status); $criteria->compare('create_data',$this->create_data,true); return new CActiveDataProvider($this, array( 'criteria'=>$criteria, 'pagination'=>array( 'pageSize'=>50, ), )); }
更多关于Yii相关内容感兴趣的读者可查看本站专题:《Yii框架入门及常用技巧总结》、《php优秀开发框架总结》、《smarty模板入门基础教程》、《php面向对象程序设计入门教程》、《php字符串(string)用法总结》、《php+mysql数据库操作入门教程》及《php常见数据库操作技巧汇总》
希望本文所述对大家基于Yii框架的PHP程序设计有所帮助。
本文向大家介绍Yii视图操作之自定义分页实现方法,包括了Yii视图操作之自定义分页实现方法的使用技巧和注意事项,需要的朋友参考一下 本文实例讲述了Yii视图操作之自定义分页实现方法。分享给大家供大家参考,具体如下: 1. 视图文件调用cgridview,clistview时候调用自定义的分页方法 2. 复制基类分页类文件,做修改成为自己的分页方法 framework/web/widgets/pag
本文向大家介绍php中各种定义变量的方法小结,包括了php中各种定义变量的方法小结的使用技巧和注意事项,需要的朋友参考一下 1.定义常量define("CONSTANT", "Hello world."); 常量只能包含标量数据(boolean,integer,float 和 string)。 调用常量时,只需要简单的用名称取得常量的值,而不能加“$”符号,如:echo CONSTANT; 注:
本文向大家介绍MySQL分页技术、6种分页方法总结,包括了MySQL分页技术、6种分页方法总结的使用技巧和注意事项,需要的朋友参考一下 概述 有朋友问: MySQL的分页似乎一直是个问题,有什么优化方法吗? 网上看到赶集网XX推荐了一些分页方法,但似乎不太可行,你能点评一下吗? 方法总结 方法1: 直接使用数据库提供的SQL语句 语句样式: MySQL中,可用如下方法: SELECT * FROM
本文向大家介绍React.js绑定this的5种方法(小结),包括了React.js绑定this的5种方法(小结)的使用技巧和注意事项,需要的朋友参考一下 this在javascript中已经相当灵活,把它放到React中给我们的选择就更加困惑了。下面一起来看看React this的5种绑定方法。 1.使用React.createClass 如果你使用的是React 15及以下的版本,你可能使用过
本文向大家介绍PostgreSQL 分页查询时间的2种比较方法小结,包括了PostgreSQL 分页查询时间的2种比较方法小结的使用技巧和注意事项,需要的朋友参考一下 数据库中存了3000W条数据,两种分页查询测试时间 第一种 SELECT * FROM test_table WHERE i_id> 1000 limit 100; Time: 0.016s 第二种 SELECT * FROM te
本文向大家介绍sqlserver分页查询处理方法小结,包括了sqlserver分页查询处理方法小结的使用技巧和注意事项,需要的朋友参考一下 sqlserver2008不支持关键字limit ,所以它的分页sql查询语句将不能用MySQL的方式进行,幸好sqlserver2008提供了top,rownumber等关键字,这样就能通过这几个关键字实现分页。 下面是本人在网上查阅到的几种查询脚本的写法: