Yii2 DetailView: значение атрибута с использованием функции

Я получаю сообщение об ошибке, когда я использую функцию для получения значения атрибута, и он работает нормально с помощью Gridview. Что я делаю неправильно?

<?= DetailView::widget([ 'model' => $model, 'attributes' => [ [ 'label' => 'subject_type', 'value' => function ($data) { return Lookup::item("SubjectType", $data->subject_type); }, 'filter' => Lookup::items('SubjectType'), ], 'id', 'subject_nature', ], ]) ?> 

Я столкнулся с такой проблемой. Ошибка была

PHP Warning – yii\base\ErrorException htmlspecialchars() expects parameter 1 to be string, object given

то, что я сделал, это передать функцию в модели, как это.

 function functionName($data) { return Lookup::item("SubjectType", $data->subject_type); }, 

а затем в файле view.php ..

  [ 'label'=>'subject_type', 'value'=>$model->functionName($data), ], 

Fabrizio Caldarelli, 05 января 2015 года – 03:53 вечера, сказал: Да, потому что атрибут «значение» – это реальное значение или имя атрибута, как говорит док

Таким образом, ваш код должен быть:

 <?= DetailView::widget([ 'model' => $model, 'attributes' => [ [ 'label' => 'subject_type', 'value' => Lookup::item("SubjectType", $model->subject_type), 'filter' => Lookup::items('SubjectType'), ], 'id', 'subject_nature', ], ]) ?> 

Просто используйте call_user_func ()

 <?= DetailView::widget([ 'model' => $model, 'attributes' => [ [ 'label' => 'subject_type', 'value' => call_user_func(function ($data) { return Lookup::item("SubjectType", $data->subject_type); }, $model), 'filter' => Lookup::items('SubjectType'), ], 'id', 'subject_nature', ], ]) ?>