在GridView::widget里,可以用attributeLabels()来指定对应字段的中文,有没类似的方法可以指定value的?
public function attributeLabels()
{
return [
'log_id' => '日志ID',
'company' => '来源公司ID',
'user_id' => '用户ID',
'modules' => '模块来源',
'create_time' => '发生时间',
];
}
················
经过一番努力终于早到了解决办法,既然自己回答不了我就在这里分享一下吧
以modules字段为例,他的值有’module_1′,’module_2′,’module_3’……
这时我们可以在对应的Model文件中添加以下代码:
const MODULE_1 = 'module_1';
const MODULE_2 = 'module_2';
const MODULE_3 = 'module_3';
public static $moduleList=[
self::MODULE_1=>"模块一",
self::MODULE_1=>"模块二",
self::MODULE_1=>"模块三"
];
public function getModule(){
$modules = self::$moduleList[$this->modules];
return isset($modules) ? $modules : null;
}
最后修改对应的视图文件,调用getModule方法
<?= GridView::widget([
'dataProvider' => $dataProvider,
'filterModel' => $searchModel,
'columns' => [
[
'class' => 'yii\grid\SerialColumn',
'headerOptions' => ['class' => '']
],
'order_id',
[
'attribute' => 'modules',
'headerOptions' => ['class' => 'col-md-1'],
'value'=>
function($model){
return $model->Module;
},
],
['class' => 'yii\grid\ActionColumn'],
],
]); ?>
最后显示的效果是,当数据库存放的值是’module_1′,’module_2′,’module_3’……那么前端显示的将是对应的中文’模块一’,’模块二’,’模块三’······
设置字段默认值?
你确定你不是在开玩笑?