yii2: jquery, если столбец gridview содержит конкретное значение, отличное от цвета

Допустим, у меня есть столбец в сетке-представлении is_delivered, который содержит массив значений, например

(1,1,0), (1,1,1), (0,0,0), то есть всего три комбинации. Я установил идентификатор ячейки как «доставлено»

Теперь, как я могу изменить цвет строки, например, красный, синий или желтый в зависимости от значения в столбце.

как например, если это (1,1,1), то цвет строки будет зеленым, если (1,1,0), то цвет строки будет желтым, а в остальном красным.

Я не могу понять, где и как начать. Я не могу использовать здесь ==, поскольку он может содержать более 3 значений. Нужно использовать какой-то оператор вроде содержит.

Я пытаюсь использовать простой код вроде

<?php
$script = <<<EOD
alert ($('#delivered').val());

EOD;
$this->registerJs($script);
?>

но это дает мне пустое предупреждение без какой-либо ценности.

Спасибо за любое предложение.

Обновление вопроса для получения значений для столбца is_delivered

[
'attribute'=>'is_delivered',
'value' => function ($data) {
$str = '';
foreach($data->medicineRequests as $request) {
$str .= $request->is_delivered.',';
}
return $str;

},

],

Таким образом, столбец is_delivered — один ко многим и взят из другой модели.

2

Решение

Вы можете просто сделать как ниже:

'attribute'=>'is_delivered',
'format'=>'raw',
'value'=>function($row){
$values=[
'(1,1,0)'=>'red',
'(1,1,1)'=>'green',
'(1,0,1)'=>'blue',
//other values with its color
];
return Html::tag('span', $row->is_delivered, ['style'=>'background-color:'.$values[$row->is_delivered]]);
}

С помощью приведенного выше кода мы сохраняем все возможные значения и назначаем цвет каждому из них. Затем мы показываем значение в span тег с цветом фона, указанным в $values массив. Кроме того, как вы можете видеть, нет необходимости использовать java-scriptили любой == или же if заявления.

Вы можете улучшить свой код, как показано ниже:

['style'=>'background-color:'.isset($values[$row->is_delivered]) ? $values[$row->is_delivered] : 'white']

Итак, если значение не существует в $values массив, он покажет это с white фон. Обратите внимание, что я установил background-color, вы должны изменить его на color вместо.

4

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]