来自 db 的 Yii2 方法名称在 gridview 中有效,但在 detailview 中无效,为什么?

Yii2 method name from db is working in gridview, but not in detailview, why?

我在 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 来自数据库,例如asDecimal。 在 DetailView 中,我收到以下错误:

PHP Fatal Error – yii\base\ErrorException

Method name must be a string

如何避免这个问题?你能给我指出正确的方向吗?谢谢!

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

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

从 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