Php db中的Yii2方法名在gridview中工作,但在detailview中不工作,为什么?

Php db中的Yii2方法名在gridview中工作,但在detailview中不工作,为什么?,php,yii2,formatter,Php,Yii2,Formatter,我在GridView中工作: [ 'attribute' => 'attribute', 'value' => function ($model) { return \Yii::$app->formatter->{$model->format}($model->attribute); }, ], 我想在DetailView中实现基本相同的功能: [ 'attribute' => 'attribute',

我在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致命错误–yii\base\ErrorException

方法名称必须是字符串

我怎样才能避免这个问题?你能给我指一下正确的方向吗?谢谢大家!

更新:它在索引页面中也不起作用。它只在使用giiant生成的视图中工作,在相关数据的GridView中工作。我看到这些是奇怪的回响gridview,但是普通gridview和类似的gridview之间的关键区别是什么:

<?=
'<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);
    },
],

确保
$model->format
不是空的,它是字符串。它肯定不是空的,但我如何确保它是字符串呢?我的意思是它肯定是数据库中的一个varchar,但不知何故,可能真的没有作为字符串处理,基本上是通过yiicheck检查
$model->format
返回的内容。不幸的是,这没有任何区别,错误仍然存在哦,伙计,应该是
$model->relationship->format
。。。现在它起作用了。非常感谢您的评论!