function() 在 Detailview yii2 中不起作用

fuction() not working in Detailview yii2

当我要在 Detailview 中显示用户详细信息时,它会抛出:

htmlspecialchars() expects parameter 1 to be string, object given

下面是我的 Detailview 代码:

view.php

        <?= DetailView::widget([
                'model' => $model,
                'attributes' => [
                    'userID',
                    'userEmail:email',
                    'userName',
                    'userMobile',
                    'userBirthDate',
                    'userGender',
                    [
                      'attribute' => 'interestName',
                      'format' => 'raw',
                      'label' => 'Interest',
                      'value' => $model->getUserinterest(),
                    ],
                      'userStatus',
                      'userType',
                ],
         ]); 

 ?>

 function getUserinterest() { 
           foreach ($model->userinterest as $userinterest) {
                $interestNames[] = $userinterest->interestName;
            }
        return implode("\n", $interestNames);
    }

自版本 2.0.11 value 可以定义为闭包。将 Yii 版本升级到开发者版本 2.0.11+ 即可。

按照下面的最终答案:

view.php

 <?= DetailView::widget([
        'model' => $model,
        'attributes' => [
            'userID',
            'userEmail:email',
            'userName',
            'userMobile',
            'userBirthDate',
            'userGender',
            [
                'attribute' => 'interestName',
                'format' => 'raw',
                'label' => 'Interest',
                'value' => $model->getviewinterest(),
            ],
           'userStatus',
           'userType',
        ],
    ]); 

 ?>

Users.php(型号)

public function getviewinterest() 
    { 
        foreach ($this->userinterest as $userinterest)
            { 
                $interestNames[] = $userinterest->interestName; 

            } 

            if(!empty($interestNames)){
                return implode("<br/>", $interestNames);
            }else{
                return "(not set)";
            }
    }