У меня это работает в 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([
Начиная с 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
Других решений пока нет …