Данные печатаются дважды в первой итерации
Я использую лезвие ларавеллы. Я пытаюсь напечатать массив данных в виде столбца в таблице. затем я помещаю условное выражение в цикл, чтобы избежать печати того же значения в том же столбце. После этого мои данные напечатаны дважды в первой итерации. Вот код
{{ $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>