【问题标题】:Yii2 DetailView: value of attribute using a function [duplicate]Yii2 DetailView:使用函数的属性值[重复]
【发布时间】:2015-03-03 10:42:22
【问题描述】:

当我使用函数获取属性的值并且使用 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',
    ],
]) ?>

【问题讨论】:

  • 从版本 2.0.11 value 也可能是一个函数。请参阅'docs'

标签: php yii2


【解决方案1】:

Fabrizio Caldarelli 在 2015 年 1 月 5 日下午 3:53 说: 是的,因为 'value' 属性是真实的值或属性名称,正如文档所说

所以你的代码应该是:

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

【讨论】:

    【解决方案2】:

    我遇到过这种问题。错误是

    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),
      ],
    

    【讨论】:

      【解决方案3】:

      只需使用 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',
          ],
      ]) ?>
      

      【讨论】:

        猜你喜欢
        • 2017-01-09
        • 1970-01-01
        • 2016-02-05
        • 1970-01-01
        • 2016-03-24
        • 2016-04-13
        • 2016-03-24
        • 2016-05-05
        相关资源
        最近更新 更多