Yii: 设置数据翻页
一种方法是使用CPagination处理翻页需要的数据如:总数据项数,每页数据项数,当前页,然后在视图中使用CBasePager来绘制。
控制器动作的代码示范:
function actionIndex(){
$criteria = new CDbCriteria();
$count=Article::model()->count($criteria);
$pages=new CPagination($count);
// results per page
$pages->pageSize=10;
$pages->applyLimit($criteria);
$models = Post::model()->findAll($criteria);
$this->render("index", array(
"models" => $models,
"pages" => $pages
));
}视图代码:
<?php foreach($models as $model): ?>
// display a model
<?php endforeach; ?>
// display pagination
<?php $this->widget("CLinkPager", array(
"pages" => $pages,
)) ?>上面的方法很灵活,可以绘制任何的数据翻页界面。
如果你希望数据以表格的形式组织和展现,那么可以直接使用另外一个解决方案:派生Yii提供的CGridView类。
这里有一个广泛使用的模式,即通过在模型中实现数据搜索的函数,然后在视图中调用。
在数据搜索函数中定义数据过滤条件,翻页条件,并最终返回数据提供容器对象CActiveDataProvider。
控制器示范代码如下:
public function search($pagesize)
{
$criteria=new CDbCriteria;
$criteria->compare("Id",$this->Id);
$criteria->compare("Title",$this->Title,true);
$criteria->compare("Views",$this->Views,true);
$criteria->compare("Description",$this->Description,true);
return new CActiveDataProvider(get_class($this), array(
"criteria"=>$criteria,
"pagination"=>array("pageSize"=>$pagesize?$pagesize:10),
));
}
其中pagesize参数用来控制数据表每页显示最大数据数目。
视图代码:
<?php $this->widget("application.extensions.YourGridView", array(
"id"=>"article-grid",
"dataProvider"=>$model->search(6),
"filter"=>$model,
"columns"=>array(
array(
"name"=>"Title",
"type"=>"raw",
"value"=>"$data->Title",
"htmlOptions"=>array("class"=>"alignLeft"),
),
array(
"name"=>"Views",
"value"=>"$data->Views",
"htmlOptions"=>array("width"=>"40px")
)
)
));
?>iefreer
声明:该文观点仅代表作者本人,入门客AI创业平台信息发布平台仅提供信息存储空间服务,如有疑问请联系rumenke@qq.com。
