本文实例讲述了Yii列表定义与使用分页方法。分享给大家供大家参考,具体如下:
方法一:控制器定义
1
2
3
4
5
6
7
8
9
10
11
12
13
|
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
));
}
|
视图定义:
1
2
3
4
5
6
7
|
<?php foreach ( $models as $model ): ?>
// 显示一个模型
<?php endforeach ; ?>
// 显示分页
<?php $this ->widget( 'CLinkPager' , array (
'pages' => $pages ,
)) ?>
|
方法二:控制器定义:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
|
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 ,
));
}
|
视图文件:
1
2
3
4
|
<?php $this ->widget( 'zii.widgets.CListView' , array (
'dataProvider' => $dataProvider ,
'itemView' => '_view' ,
)); ?>
|
方法三:视图文件
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
|
<?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' ,
),
),
));
|
数据模型类:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
|
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程序设计有所帮助。