2017-02-21 4 views
0

Я хотел бы изменить класс для одного атрибута в DetailView, основываясь на состоянии:yii2 DetailView условная строка класса

Если бы я не хочу, чтобы сделать его условным, оно будет работать следующим образом:

[ 
    'attribute' => 'ungueltig', 
    'format' => 'boolean', 
    'contentOptions' => [ 
     'class' => 'danger', 
     ] 
], 

Я хочу, чтобы этот один, чтобы изменить условное, и я пробовал много разных способов, например:

[ 
    'attribute' => 'ungueltig', 
    'format' => 'boolean', 
    'contentOptions' => function ($model) { 
     if ($model->ungueltig == 1) { 
      return ['class' => 'danger']; 
     } else { 
      return ''; 
     } 
    }, 
], 

(я думаю, что это самое логичное решение, но ничего не происходит, так вол е загружается нормально, но без класса опасности на атрибут, сообщение об ошибке)

или

[ 
    'attribute' => 'ungueltig', 
    'format' => 'boolean', 
    'contentOptions' => ['class' => function ($model) { 
     if ($model->ungueltig == 1) { 
      return 'danger'; 
     } else { 
      return ''; 
     } 
    },] 
], 

= сообщение об ошибке: htmlspecialchars() не ожидает параметр 1, чтобы быть строкой, данный объект

поэтому я понятия не имею, и я даже не нашел никакой помощи в Интернете. Не могли бы вы указать мне правильное направление? Большое спасибо!

ответ

2

Вы должны просто попробовать:

'contentOptions' => [ 
    'class' => ($model->ungueltig == 1) ? 'danger' : '', 
], 

DetailView дисплей только одна модель, вам не нужны какие-либо функции здесь.

+0

О, человек, самая простая вещь не пришла мне на ум ... большое спасибо! – user2511599

Смежные вопросы