在 DetailView 中过滤空值

tre*_*der 4 yii detailview yii2

是否有一种简单的方法可以强制DetailViewYii2 忽略其attributes列表中的这些字段,尤其model是空字段?

或者唯一的方法是用自己的函数定义列表中的每个属性attributes并过滤其中的空字段(听起来有点疯狂)?

编辑:我认为,这是不言自明的,但事实证明,事实并非如此。因此,基本上,我想强制DetailView忽略(不呈现)attributes列表中这些元素的行,这些行具有相应的空(空,空字符串)值model,因此会导致呈现空表格单元格:

在此处输入图片说明

Ton*_*ony 6

您可以将DetailView小部件的template参数定义为具有以下签名的回调函数,并且将为每个属性调用此回调,因此您可以为行定义所需的渲染:function ($attribute, $index, $widget)

DetailView::widget([
    'model' => $model,
    'template' => function($attribute, $index, $widget){
        //your code for rendering here. e.g.
        if($attribute['value'])
        {
            return "<tr><th>{$attribute['label']}</th><td>{$attribute['value']}</td></tr>";
        }
    },
    //other parameters
]);
Run Code Online (Sandbox Code Playgroud)