Blade Directive: Logika di View
Kuasai @if, @foreach, @forelse, dan $loop untuk menampilkan data dinamis tanpa PHP berantakan.
Kondisional: @if dan kawan-kawan
Blade menyediakan directive bersih untuk logika kondisional:
@if ($post->status === 'published')
<span class="badge-hijau">Published</span>
@elseif ($post->status === 'draft')
<span class="badge-kuning">Draft</span>
@else
<span class="badge-merah">Arsip</span>
@endif
@unless ($user->isAdmin())
<p>Kamu bukan admin.</p>
@endunless
@isset($post->gambar)
<img src="{{ $post->gambar }}" alt="Cover">
@endisset
@empty($komentar)
<p>Belum ada komentar. Jadilah yang pertama!</p>
@endempty@unless adalah kebalikan @if, @isset mengecek variabel ada dan tidak null, @empty mengecek kosong.
Looping: @foreach dan @forelse
@foreach ($posts as $post)
<article>
<h2>{{ $post->judul }}</h2>
<p>{{ $post->ringkasan }}</p>
</article>
@endforeachKalau koleksinya bisa kosong, @forelse lebih elegan karena punya blok @empty bawaan:
@forelse ($posts as $post)
<article>{{ $post->judul }}</article>
@empty
<p>Belum ada postingan.</p>
@endforelseVariabel $loop: info posisi iterasi
Di dalam loop, Blade menyediakan variabel $loop berisi info posisi:
@foreach ($users as $user)
<li class="{{ $loop->first ? 'pertama' : '' }}">
{{ $loop->iteration }}. {{ $user->nama }}
@if ($loop->last)
<span>(terakhir)</span>
@endif
</li>
@endforeachProperti yang tersedia: $loop->index (mulai 0), $loop->iteration (mulai 1), $loop->first, $loop->last, $loop->count, $loop->even dan $loop->odd, sampai $loop->depth untuk nested loop.
Catatan teknis: Jangan menjalankan query database di dalam loop Blade (misalnya memanggil relasi yang belum di-load di tiap iterasi). Itu pola N+1 yang bikin halaman lambat. Siapkan datanya di controller dengan eager loading, lalu view tinggal menampilkan. Detailnya ada di modul Eager Loading.