Yii Framework 开发教程(30) Zii组件-ListView 示例

jerry Yii 2015年11月24日 收藏

CListView可以用来显示列表,CListView支持使用自定义的View模板显示列表的的记录,因此可以非常灵活的显示数据的表,这点有点像Android的ListView:-)。

CListView 支持分页和排序,分页和排序支持使用AJAX实现从而可以提高页面的响应性能。CListView的使用需要通过DataProvider,通常是使用CActiveDataProvider。

修改Yii Framework 开发教程(26) 数据库-Active Record示例,不过为了显示分页,我们使用Customer数据库表,每页显示10条记录。

修改缺省的视图protected/views/site/index.php,使用ListView组件。

  1. <?php $this->widget('zii.widgets.CListView', array(
  2. 'dataProvider'=>$dataProvider,
  3. 'ajaxUpdate'=>false,
  4. 'template'=>'{sorter}{pager}{summary}{items}{pager}',
  5. 'itemView'=>'_view',
  6. 'pager'=>array(
  7. 'maxButtonCount'=>'7',
  8. ),
  9. 'sortableAttributes'=>array(
  10. 'FirstName',
  11. 'LastName',
  12. 'Country',
  13. ),
  14. )); ?>

参数template 配置页面显示的模板,支持的参数有 {summary}, {sorter}, {items} 和{pager},分别对应于ListView的汇总,排序,列表项,分页控制。
参数itemView 指明每个列表项对应的View显示。使用site/_view.php ,定义如下:

  1. <div class="item">
  2.  
  3. <h3><?php echo CHtml::encode($data->FirstName . ' ' . $data->LastName);?></h3>
  4.  
  5. <b><?php echo CHtml::encode($data->getAttributeLabel('Company')); ?>:</b>
  6. <?php echo CHtml::encode($data->Company); ?>
  7. <br />
  8.  
  9. <b><?php echo CHtml::encode($data->getAttributeLabel('Address')); ?>:</b>
  10. <?php echo Yii::app()->format->formatUrl($data->Address); ?>
  11. <br />
  12.  
  13. <b><?php echo CHtml::encode($data->getAttributeLabel('Country')); ?>:</b>
  14. <?php echo CHtml::encode($data->Country); ?>
  15. <br />
  16.  
  17. <b><?php echo CHtml::encode($data->getAttributeLabel('Email')); ?>:</b>
  18. <?php echo Yii::app()->format->formatEmail($data->Email); ?>
  19. <br />
  20.  
  21. </div>

然后修改SiteController的indexAction方法:

  1. public function actionIndex()
  2. {
  3.  
  4. $dataProvider=new CActiveDataProvider('Customer', array(
  5. 'pagination'=>array(
  6. 'pageSize'=>10,
  7. 'pageVar'=>'page',
  8. ),
  9. 'sort'=>array(
  10. 'defaultOrder'=>'Lastname',
  11. ),
  12. ));
  13. $this->render('index',array(
  14. 'dataProvider'=>$dataProvider,
  15. ));
  16. }

创建CActiveDataProvider,并配置分页和排序参数(pagination和sort),指明ActiveDataProvider取自Customer ActiveRecord.

显示结果如下:

201212128004

下载地址