Yii1.1 CGridView 简单使用
- 配置model文件,返回CActiveDataProvider对象。
public function search()
{$criteria=new CDbCriteria;$criteria->compare('title',$this->title,true);$criteria->compare('type',$this->type);$criteria->compare('addr',$this->addr,true);$criteria->compare('status',$this->status);$criteria->compare('show_time',$this->show_time);$criteria->order = 'order_by,id desc';return new CActiveDataProvider(get_class($this), array('criteria'=>$criteria,'Pagination' => array ('PageSize' => 15 ),));
}
复制代码
- 在模板文件中,通过widget使用CGridView小物件。
$this->widget('zii.widgets.grid.CGridView', array());
复制代码
通过dataProvider接收对象。
$this->widget('zii.widgets.grid.CGridView', array('id' => 'post-grid','dataProvider' => $searchModel->search(),
);
复制代码
加上搜索框
'filter' => $searchModel(),model文件,rules属性return加上要搜索的字段:
array('title, type, addr, status, show_time', 'safe', 'on'=>'search'),
复制代码
columns为展示的字段。filter搜索框为下拉菜单。'class'=>'CButtonColumn'为按钮,其中,'view','update','delete'按钮名特殊处理。
'columns'=>array('title',array('name' => 'type','value'=> function($data){return EnquirySetting::dropDown('type',$data->type);},'filter' => EnquirySetting::dropDown('type'),),'addr',array('name' => 'status','value'=> function($data){return EnquirySetting::dropDown('status',$data->status);},'filter' => EnquirySetting::dropDown('status'),),'show_time',array('class'=>'CButtonColumn','template'=>'{edit}{delete}','buttons'=>array('edit' => array('label'=>Yii::t('label', 'update').' ',//按钮名称'url'=>'Yii::app()->createUrl("onlineshop/chat-edit",array("chat_id"=>$data->id))',//按钮跳转地址'visible'=>"UserRolePermissionUtilities::checkUserPagePermission('/xxx/edit', 'w')",//权限控制),'delete' => array('label'=>Yii::t('label', 'delete'),//按钮名称'url' => 'Yii::app()->createUrl("onlineshop/chat-del",array("chat_id"=>$data->id))',//按钮跳转地址'visible'=>"UserRolePermissionUtilities::checkUserPagePermission('/xxx/delete', 'w')",//权限控制),),'deleteConfirmation'=>Yii::t('product','DEL_CONFIRM'),),
),
复制代码
下拉菜单返回
public static function dropDown($column,$value=null){$dropDownList = array('type' => array('1' => 'www','2' => 'wap',),'status' => array('0' => Yii::t("product","CHAT_CLOSE"),'1' => Yii::t("product","CHAT_OPEN"),));if ($value !== null)return array_key_exists($column, $dropDownList) ? $dropDownList[$column][$value] : false;elsereturn array_key_exists($column, $dropDownList) ? $dropDownList[$column] : false;
}
复制代码
附上完整代码
controller
public function actionChatIcon()
{$searchModel = new EnquirySetting();$searchModel->unsetattributes();if(!empty($_REQUEST['EnquirySetting'])){$searchModel->attributes = $_REQUEST['EnquirySetting'];}$criteria = new CDbCriteria();$count = EnquirySetting::model()->count($criteria);$this->render( 'chat-icon',array( 'count'=>$count,'searchModel'=>$searchModel ) );}
复制代码
view
<?phpif (empty($count)) {echo Yii::t('pagecontent',"list_no_message");
} else {
?><div class="div-table" ><?php $this->widget('zii.widgets.grid.CGridView', array('id'=>'post-grid','dataProvider'=>$searchModel->search(),'filter'=>$searchModel,'columns'=>array('title',array('name' => 'type','value'=> function($data){return EnquirySetting::dropDown('type',$data->type);},'filter' => EnquirySetting::dropDown('type'),),'addr',array('name' => 'status','value'=> function($data){return EnquirySetting::dropDown('status',$data->status);},'filter' => EnquirySetting::dropDown('status'),),'show_time',array('class'=>'CButtonColumn','template'=>'{edit}{delete}','buttons'=>array('edit' => array('label'=>Yii::t('label', 'update').' ','url'=>'Yii::app()->createUrl("onlineshop/chat-edit",array("chat_id"=>$data->id))','visible'=>"UserRolePermissionUtilities::checkUserPagePermission('/onlineshop/chaticon', 'w')",),'delete' => array('label'=>Yii::t('label', 'delete'),'url' => 'Yii::app()->createUrl("onlineshop/chat-del",array("chat_id"=>$data->id))','visible'=>"UserRolePermissionUtilities::checkUserPagePermission('/onlineshop/chaticon', 'w')",),),'deleteConfirmation'=>Yii::t('product','DEL_CONFIRM'),),),));?>
</div><?php
}
?>
复制代码
model
class EnquirySetting extends CActiveRecord
{public static function model($className=__CLASS__){return parent::model($className);}public function tableName(){return 'table_name';}public function rules(){return array(array('title, type, addr','required'),array('title, type, addr, status, show_time, order_by','safe'),array('title, type, addr, status, show_time', 'safe', 'on'=>'search'),);}public function attributeLabels(){return array('title' => Yii::t('product', 'CHAT_TITLE'),'type' => Yii::t('product', 'CHAT_TYPE'),'addr' => Yii::t('product', 'CHAT_ADDR'),'status' => Yii::t('product', 'CHAT_STATUS'),'order_by' => Yii::t('product', 'CHAT_ORDER_BY'),'show_time' => Yii::t('product', 'CHAT_SHOW_TIME'),'created_date' => Yii::t('product', 'CHAT_CREATED_DATE'),'created_by' => Yii::t('product', 'CHAT_CREATED_BY'),'modified_date' => Yii::t('product', 'CHAT_MODIFIED_DATE'),'modified_by' => Yii::t('product', 'CHAT_MODIFIED_BY'),);}public function search(){$criteria=new CDbCriteria;$criteria->compare('title',$this->title,true);$criteria->compare('type',$this->type);$criteria->compare('addr',$this->addr,true);$criteria->compare('status',$this->status);$criteria->compare('show_time',$this->show_time);$criteria->order = 'order_by,id desc';return new CActiveDataProvider(get_class($this), array('criteria'=>$criteria,'Pagination' => array ('PageSize' => 15),));}public static function dropDown($column,$value=null){$dropDownList = array('type' => array('1' => 'www','2' => '1cm',),'status' => array('0' => Yii::t("product","CHAT_CLOSE"),'1' => Yii::t("product","CHAT_OPEN"),));if ($value !== null)return array_key_exists($column, $dropDownList) ? $dropDownList[$column][$value] : false;elsereturn array_key_exists($column, $dropDownList) ? $dropDownList[$column] : false;}
}
复制代码