Larapak
Ctrl K

Sistem Template Sawangan (.nview)

Larapak mengusung sistem template Blade-like bawaan yang sangat intuitif. Seluruh file template disimpan di folder sawangan/ dan menggunakan ekstensi file .nview.

1. Layout & Pewarisan Halaman

Anda dapat membuat template induk master (misalnya sawangan/layout.nview) dengan penanda posisi @yield:

<!-- sawangan/layout.nview -->
<!DOCTYPE html>
<html>
<head>
    <title>{{ title }}</title>
    <link rel="stylesheet" href="/css/rikat.css">
</head>
<body>
    <header>
        <h1>Aplikasi Larapak</h1>
    </header>

    <main>
        @yield "content"
    </main>
</body>
</html>

Halaman anak dapat mewarisi layout tersebut menggunakan @layout dan mendefinisikan blok konten dengan @section:

<!-- sawangan/produk.nview -->
@layout "layout.nview"

@section "content"
    <h2>Daftar Produk Unggulan</h2>
    <p>Selamat berbelanja di toko kami.</p>
@rampung

2. Interpolasi Variabel

Nilai variabel dapat ditampilkan menggunakan sintaksis kurung kurawal ganda {{ variabel }} (otomatis disanitasi terhadap serangan XSS HTML injection):

<p>Halo, {{ nama_pengguna }}!</p>

Jika Anda secara sengaja ingin merender string HTML mentah tanpa sanitasi, gunakan penanda {!! html_raw !!}:

<div>{!! artikel.konten_html !!}</div>

3. Perulangan (@baleni)

Ulangi data array atau koleksi list menggunakan @baleni:

<ul>
    @baleni item neng daftar_produk
        <li>{{ item.nama }} - Rp {{ item.harga }}</li>
    @rampung
</ul>

4. Percabangan Kondisional (@nek, @liyane)

Gunakan percabangan kondisi untuk menampilkan blok antarmuka secara bersyarat:

@nek pengguna.aktif ya
    <span class="badge badge-success">Akun Aktif</span>
@liyane
    <span class="badge badge-danger">Akun Terkunci</span>
@rampung

5. Proteksi CSRF & Validasi Form (@csrf, @error)

Directive @csrf menyisipkan input hidden token keamanan otomatis, sementara @error menampilkan pesan validasi formulir:

<form action="/kontak" method="POST">
    @csrf
    
    <label>Alamat Email:</label>
    <input type="email" name="email" value="{{ lawas('email') }}">
    
    @error("email")
        <span class="text-danger">{{ pesan }}</span>
    @rampung
    
    <button type="submit">Kirim</button>
</form>

6. Menyelipkan File Bagian (@include atau @mlebui)

Gunakan @include "nama_komponen" untuk memecah antarmuka menjadi komponen modular yang rapi (seperti navbar atau footer):

@include "komponen/footer"
Peningkatan di v1.1.0: Sistem Template Sawangan kini mengevaluasi kedalaman directive bersarang (nested directives seperti @nek, @baleni, dan @error) di dalam blok @section secara presisi tanpa memotong penutupan master layout secara prematur.