来自db的Yii2方法名称在gridview中起作用,但在detailview中却不起作用,为什么?

时间:2018-06-20 12:15:39

标签: php yii2 formatter

我已经在GridView中工作了

[
    'attribute' => 'attribute',
    'value' => function ($model) {
        return \Yii::$app->formatter->{$model->format}($model->attribute);
    },
],

我想实现基本相同但在DetailView中实现:

[
    'attribute' => 'attribute',
    'value' => \Yii::$app->formatter->{$model->format}($model->attribute),
],

$model->format来自DB,例如asDecimal。 在DetailView中,出现以下错误:

  

PHP致命错误– yii \ base \ ErrorException

     

方法名称必须是字符串

如何避免此问题?您能指出我正确的方向吗?谢谢!

更新:它在索引页面中也不起作用。它仅适用于由giiant生成的视图,以及相关数据的网格视图。我看到这些是在某种程度上奇怪的回显的GridView,但是普通GridView和类似的GridView之间的主要区别是什么?

<?=
'<div class="table-responsive">'
. \yii\grid\GridView::widget([
    'layout' => '{summary}{pager}<br/>{items}{pager}',
    'dataProvider' => new \yii\data\ActiveDataProvider([

1 个答案:

答案 0 :(得分:0)

从Yii 2.0.11开始,您可以像在DetailView中一样在GridView中使用闭包:

[
    'attribute' => 'attribute',
    'value' => function ($model) {
        return \Yii::$app->formatter->{$model->format}($model->attribute);
    },
],

https://www.yiiframework.com/doc/guide/2.0/en/output-data-widgets#detail-view