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;
else
return 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
<?php
if (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;
else
return array_key_exists($column, $dropDownList) ? $dropDownList[$column] : false;
}
}
复制代码