Sistem Template Sawangan (.nview)
Pewarisan layout, section, interpolasi nilai, dan directive template blade-like.
Oktober 2026 / v1.1.0Sistem 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"
@nek, @baleni, dan @error) di dalam blok @section secara presisi tanpa memotong penutupan master layout secara prematur.