Yii列表定义与使用分页方法小结(3种方法)
2016-08-13来源:

这篇文章主要介绍了Yii列表定义与使用分页方法,总结分析了3种方法供大家参考,涉及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

));

}

视图定义:

// 显示一个模型

// 显示分页

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,

));

}

视图文件:

widget('zii.widgets.CListView', array(

'dataProvider'=>$dataProvider,

'itemView'=>'_view',

)); ?>

方法三:视图文件

widget('zii.widgets.grid.CGridView', array(

'id'=>'news-grid',

'dataProvider'=>$model->search(),

'filter'=>$model,

'template'=>'{items}{summary}{pager}',

'pager'=>array(

'class'=>'CLinkPager',

'header'=>'分页:',

'prevPageLabel'=>'上一页',

'nextPageLabel'=>'下一页',

),

'summaryText'=>'页数:{pages}/{page}页',

'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框架的PHP程序设计有所帮助。

推荐信息
Baidu
map