Yii2 DetailView:使用函数的属性值
Yii2 DetailView: value of attribute using a function
当我使用函数获取属性值时出现错误,并且使用 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',
],
]) ?>
Fabrizio Caldarelli,2015 年 1 月 5 日 - 03:53 下午,他说:
是的,因为 'value' 属性是一个真实的值或属性名称,正如文档所说
所以你的代码应该是:
<?= DetailView::widget([
'model' => $model,
'attributes' => [
[
'label' => 'subject_type',
'value' => Lookup::item("SubjectType", $model->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),
],
只需使用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',
],
]) ?>
当我使用函数获取属性值时出现错误,并且使用 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',
],
]) ?>
Fabrizio Caldarelli,2015 年 1 月 5 日 - 03:53 下午,他说: 是的,因为 'value' 属性是一个真实的值或属性名称,正如文档所说
所以你的代码应该是:
<?= DetailView::widget([
'model' => $model,
'attributes' => [
[
'label' => 'subject_type',
'value' => Lookup::item("SubjectType", $model->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),
],
只需使用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',
],
]) ?>