有没有一种简单的方法可以强制 Yii2 中的 DetailView 忽略其 attributes 列表中的这些字段,对于特定的 model 是空的?

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

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

最佳答案

您可以将 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
]);

关于yii - 在 DetailView 中过滤空值,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/31110418/

10-12 00:05
查看更多