在控制器:
代码如下 | 复制代码 |
class PostController extends Controller { function actionIndex() { $criteria = new CDbCriteria(); $count=Post::model()->count($criteria); $pages=new CPagination($count); // elements per page $pages->pageSize=5; $pages->applyLimit($criteria); // sorting $sort = new CSort('Post'); $sort->attributes = array('id', 'title',); $sort->applyOrder($criteria); $models = Post::model()->findAll($criteria); $this->render('index', array( 'models' => $models, 'pages' => $pages, 'sort' => $sort, )); } } |
在视图文件中:
代码如下 | 复制代码 |
<p><?php echo $sort->link('id')?></p> <p><?php echo $sort->link('title')?></p> <ol> <?php foreach($models as $model):?> <li> <h2><?php echo $model->id?> - <?php echo $model->title?></h2> </li> <?php endforeach?> </ol> <?php $this->widget('CLinkPager', array( 'pages' => $pages, ))?> |
一. DAO实现分页.
[Controller层]
代码如下 | 复制代码 |
public function actionReport() { $sql = "select remitdate, sum(rate) sumrate from td_delivery group by remitdate order by remitdate desc"; $criteria=new CDbCriteria(); $result = Yii::app()->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层] <?php foreach($posts as $row):?> |
优点: DAO效率高; 缺点: view层需要自己写一些样式,稍显麻烦一点
二. widget实现分页
[model层]
代码如下 | 复制代码 |
/** * @var string attribute : 日运费 (统计用) * 需要对新增加的字段做个声明 */ public $dayrate; /* [Controller层] /** [View层] <?php $this->widget('zii.widgets.grid.CGridView', array( |
优点: 可以使用自带的样式; 缺点: 效率略低.