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
声明:该文观点仅代表作者本人,牛骨文系教育信息发布平台,牛骨文仅提供信息存储空间服务。
- 上一篇: Yii2之设置默认值
- 下一篇: Yii 分页器Pagesize的设置方法