创建方法actionIndex
public function actionIndex(){ $criteria = new CDbCriteria(); $criteria->with = array( 'city', 'user_info' ); //实例化数据提供器对象,第一个参数是查询的AR模型类名 $dataProvider = new CActiveDataProvider('User'); //设置查询器的查询条件 $dataProvider->setCriteria($criteria); //设置分页的页大小 $dataProvider->setPagination(array('pageSize'=>3)); $this->render('index',array( 'dataProvider'=>$dataProvider, )); }创建视图views/user/index.php
<?php $this->widget('zii.widgets.grid.CGridView', array( 'dataProvider'=>$dataProvider, 'columns'=>array( 'id', // display the 'title' attribute 'username', // display the 'title' attribute 'city.name', // display the 'name' attribute of the 'category' relation // 'content:html', // display the 'content' attribute as purified HTML array( // display 'create_time' using an expression 'name'=>'create_time', 'value'=>'date("Y-m-d", $data->create_time)', ), array( // display 'author.username' using an expression 'name'=>'info', 'type'=>'raw', 'value'=>'$data->user_info->info', ), array( // display a column with "view", "update" and "delete" buttons 'class'=>'CButtonColumn', ), ), )); ?>只需要简单的配置,我们就可以看到如下图的效果
... 'dataProvider'=>$dataProvider, 'ajaxUpdate'=>false,//设置为false表示不是ajax分页 'columns'=>array( ...
array( 'name'=>'简介',//可以使用name来指定列名 'type'=>'raw', 'value'=>'$data->user_info->info', ), 或者 array( // 'name'=>'info', 'header'=>'简介',//或者使用header来指定列名 'type'=>'raw', 'value'=>'$data->user_info->info', ),
array( 'class'=>'CButtonColumn', 'header'=>'操作', 'template'=>'{view} {update} {delete} {log}', 'buttons'=>array( 'log'=>array( 'label'=>'日志', 'url'=>'Yii::app()->controller->createUrl("log",array("id"=>$data->id))', // 'imgUrl'=>'',//按钮图片地址 'options'=>array( 'onclick'=>'alert("确认要查看吗?");return false;',//添加点击事件 ), 'visible'=>'$data->isShow()',//权限控制 ), ), 'htmlOptions'=>array('style'=>'width:100px;') ),在user模型中 我们定义了一个方法,isShow()
//是否显示日志功能 public function isShow(){ return $this->id % 2 == 0; }此时在浏览器中输入 http://localhost/bootstrap/index.php/user/index,显示如下
'columns' = > array ( array ( 'class' = > 'CCheckBoxColumn' , 'name' = > 'id' ,//取value值为id对应的值 'id'=>'select',//取name为select数组 ), 'id' , ......再次刷新可以看到(上图)在最左侧多了一个复选框,打开debug可以看到(下图),复选框的value值为id对应的值,复选框的name是一个select数组