Имя метода Yii2 из db работает в gridview, но не в detailview, почему?

У меня это работает в 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, в виде сетки связанных данных. Я вижу, что это как-то странно отражается в виде сетки, но в чем заключается ключевое различие между обычным видом сетки и тем, что выглядит так:

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

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

0

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]