2015-06-29 3 views
2

Есть ли простой способ заставить DetailView в Yii2 игнорировать эти поля в своем списке attributes, что для конкретных model пуст?Фильтровать пустые значения в DetailView

Или единственный способ определить каждый атрибут на attributes список с собственной функцией и фильтровать пустые поля внутри (звучит как немного безумия)?

Редактировать: Я думал, что это довольно понятно, но оказалось, что это не так. Так, в принципе, я хочу, чтобы заставить DetailView игнорировать (не делают) строк для этих элементов attributes списка, которые имеют пустое (NULL, пустая строка) значений в соответствующих model и, следовательно, приведет к визуализации пустой ячейки таблицы:

enter image description here

+0

Можете ли вы описать более чистые, чего вы хотите достичь? – Tony

+0

Я думал, что это довольно понятно. См. Обновленный вопрос. – trejder

ответ

4

вы можете определить template параметр DetailView виджета как обратного вызова функции со следующей подписью 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 
]); 
+1

Хороший код! Отлично работает, только я бы подумал: if (isset ($ attribute ['value']) && $ attribute ['value']! = '' && $ attribute ['value']! = '') {'Condition to «поймать» больше ситуаций, которые вы хотите отфильтровать. – trejder

+0

Состояние фильтра зависит от вас) – Tony