Я получаю сообщение об ошибке, когда я использую функцию для получения значения атрибута, и он работает нормально с помощью 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', ], ]) ?>