laravelbladeviewPemula3 mnt baca

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:

blade
@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

blade
@foreach ($posts as $post)
    <article>
        <h2>{{ $post->judul }}</h2>
        <p>{{ $post->ringkasan }}</p>
    </article>
@endforeach

Kalau koleksinya bisa kosong, @forelse lebih elegan karena punya blok @empty bawaan:

blade
@forelse ($posts as $post)
    <article>{{ $post->judul }}</article>
@empty
    <p>Belum ada postingan.</p>
@endforelse

Variabel $loop: info posisi iterasi

Di dalam loop, Blade menyediakan variabel $loop berisi info posisi:

blade
@foreach ($users as $user)
    <li class="{{ $loop->first ? 'pertama' : '' }}">
        {{ $loop->iteration }}. {{ $user->nama }}
        @if ($loop->last)
            <span>(terakhir)</span>
        @endif
    </li>
@endforeach

Properti 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.