Php Yii2由不同属性值定义的GridView属性格式
我想根据db字段值定义Php Yii2由不同属性值定义的GridView属性格式,php,gridview,yii2,format,Php,Gridview,Yii2,Format,我想根据db字段值定义GridView中属性的格式。例如,我试着这样做: 'format' => function ($model) {return $model->format;}, // it should return 'boolean' 但我也尝试过很多其他的方法,但都不起作用。我得到: PHP通知–yii\base\ErrorException 正在尝试获取非对象的属性 如果我只是将format作为一个属性返回,那么它的工作没有任何问题。似乎它在格式部分不接受它。 我到底
GridView
中属性的格式。例如,我试着这样做:
'format' => function ($model) {return $model->format;}, // it should return 'boolean'
但我也尝试过很多其他的方法,但都不起作用。我得到:
PHP通知–yii\base\ErrorException
正在尝试获取非对象的属性
如果我只是将format
作为一个属性返回,那么它的工作没有任何问题。似乎它在格式
部分不接受它。
我到底有没有可能实现我的目标?您能给我指一下正确的方向吗?
Closure
s不支持格式
。您可以使用raw
格式并在Closure
中对值进行格式化:
[
'attribute' => 'name',
'type' => 'raw',
'value' => function ($model) {
$format = 'as' . ucfirst($model->format);
return Yii::$app->formatter->$format($model->name);
},
],
提及
例如:
<?= GridView::widget([
'id' => 'grid-list',
'dataProvider' => $dataProvider,
[
'attribute' => 'format_date',
// 'format' => 'raw',
'value' => function ($model) {
// Here use \Yii::$app->formatter->asDate();
// Ex: return \Yii::$app->formatter->asDate($model->format_date);
return \Yii::$app->formatter->asDate($model->format_date);
},
],
]) ?>
看起来不错:'value'=>函数($model){return\Yii::$app->formatter->{$model->format}($model->value);},
非常感谢你们两位!很难决定你们中的哪一位获得了分数,因为rob006花了时间来解决我的问题,他解释得更好,但是,从技术上来说,你的答案也是正确的。