Данные печатаются дважды в первой итерации

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

    {{ $prevKomponen = null }}
    {{ $prevKegiatan = null }}
    @foreach($data as $key => $value)
        <tr>

            @if ($prevKomponen != $value['komponen'])

                <td>{{ $value['komponen'] }}***</td>  

            @else

                <td>-------</td>

            @endif    

            {{ $prevKomponen = $value['komponen'] }}

            <td>{{$value['kegiatan']}}</td>
            <td>{{$value['subkegiatan']}}</td>
            <td>{{$value['rincian']}}</td>
            <td>{{$value['jumlah']}}</td>
            <td>{{$value['harga']}}</td>
            <td>{{$value['total_harga']}}</td>
        </tr>
    @endforeach

И вот результат. Данные в столбце 1 также печатаются в столбце 2

Любая помощь для решения этой проблемы?

2 ответа

Решение

Это должно быть вызвано https://laravel.com/docs/5.5/blade. Он говорит: "Вы можете отобразить данные, переданные в ваши представления Blade, заключив переменную в фигурные скобки".

Итак, когда вы попали в эти строки:

{{ $prevKomponen = $value['komponen'] }}

Это будет отображаться как вывод.

Но, если вы хотите игнорировать это, вы можете добавить символ '@', вот так:

@{{ $prevKomponen = $value['komponen'] }}

Символ "@" информирует движок рендеринга Blade, что выражение должно оставаться нетронутым. Надеюсь, это поможет вам.

Вы пропустили тд, попробуйте этот фрагмент в вашем условии if

@if ($prevKomponen != $value['komponen'])

         <td>{{ $value['komponen'] }}***</td>  

        @else

                <td>-------</td>

       @endif    

          <td>{{ $prevKomponen = $value['komponen'] }}</td>
Другие вопросы по тегам