Как изменить цвет таблицы 'td' на основе изменения ключа в цикле foreach - PullRequest
0 голосов
/ 17 февраля 2019

Я пытаюсь установить цвет при изменении значения $key.Я имею в виду, что я генерирую таблицу, когда мой $key меняется.Теперь я хочу установить другой цвет bg, когда ключ $ меняет и создается новая таблица.Теперь <th colspan="5">{{$key}}</th> меняется и создает таблицу для каждого $key Мне нужно установить цвет, который меняется $key.

@foreach($lists as $key => $ser)
    <table class="table table-striped table-bordered table-hover" id="sample_3">
        <thead>
        <tr>
            <th colspan="5">{{$key}}</th>
        </tr>
        <tr>
            <th> Destination</th>
            <th> Services</th>
            <th> Status</th>
            <th> Time</th>
        </tr>
        </thead>
        <tbody>
        @foreach($ser as  $s)
            <tr>
                <td style="background: rgb(176,224,230);"> TE 17 <br/>{{$s->sp}}</td>
                <td> {{$s->dd}}</td>
                <td> {{$s->ss}}</td>
                <td> {{$s->dt}}</td>
            </tr>
        @endforeach
        </tbody>
    </table>
@endforeach

Ответы [ 2 ]

0 голосов
/ 17 февраля 2019

Вы можете сначала добавить класс из блейда в элементы группы, имеющие аналогичное значение:

@php($prev = null)
@php($counter = 1)
@foreach($ser as  $s)
    @php 
        $counter = $s->key == $prev || is_null($prev) ? $counter : $counter + 1;
    @endphp
    <tr>
        <td class="td_color_{{ $counter }}"> TE 17 <br/>{{$s->sp}}</td>
        <td> {{$s->dd}}</td>
        <td> {{$s->ss}}</td>
        <td> {{$s->dt}}</td>
    </tr>
    @php($prev = $s->key)
@endforeach

Это даст вам следующее для первого столбца в каждом <tr>:

<td class="td_color_1">...</td>
<td class="td_color_1">...</td>
<td class="td_color_2">...</td>
<td class="td_color_2">...</td>
<td class="td_color_3">...</td>
<td class="td_color_4">...</td>
<td class="td_color_5">...</td>

Тогда в вашем css у вас есть цвета для них:

<style type="text/css">
    td.td_color_1 { background: red; }
    td.td_color_2 { background: blue; }
    td.td_color_3 { background: green; }
    td.td_color_4 { background: yellow; }
    td.td_color_5 { background: pink; }
</style>
0 голосов
/ 17 февраля 2019

Вы можете использовать переменную для хранения значения $key в каждом цикле.Затем вы можете проверить, совпадает ли $key с предыдущим, и соответственно изменить цвет.

@php($prevvalue='')
@foreach($ser as  $s)
<tr>
    <td  style="background: {{$s->key == $prevvalue ? 'oldcolor','newcolor'}}"> TE 17 <br/>{{$s->sp}}</td>
    <td> {{$s->dd}}</td>
    <td> {{$s->ss}}</td>
    <td> {{$s->dt}}</td>
</tr>
@php($prevvalue = $s->key)
@endforeach
...