Views & Templates

Views memisahkan logika aplikasi (Controller) dari logika presentasi (HTML). Di LamdaPHP, views disimpan di direktori resources/views dan menggunakan ekstensi file khusus .lamda.php agar dapat diproses oleh Template Engine.

Creating & Rendering Views

Untuk membuat tampilan baru, buat file misalnya welcome.lamda.php di dalam folder views. Kemudian, Anda dapat mengembalikannya dari Controller menggunakan metode view().

HomeController.php
public function index()
{
    // Memanggil resources/views/welcome.lamda.php
    return $this->view('welcome', [
        'title' => 'Halaman Utama',
        'users' => ['Rizky', 'Saria']
    ]);
}

Template Syntax

LamdaPHP dilengkapi dengan engine templating ringan yang memudahkan penulisan kode PHP di dalam HTML. File template akan dikompilasi ke PHP murni dan di-cache untuk performa maksimal.

1. Menampilkan Data

{{ $variable }}

Mencetak data dengan keamanan htmlspecialchars. Gunakan ini secara default untuk mencegah XSS.

{!! $variable !!}

Mencetak data secara mentah (raw/unescaped). Hati-hati saat menggunakan ini dengan input pengguna.

2. Struktur Kontrol

Anda bisa menggunakan direktif @ untuk menggantikan sintaks PHP yang panjang.

Example View
                            <!-- Kondisional -->
                            @if($users)
                                <!-- Perulangan -->
                                @foreach($users as $user)
                                    <div>Halo, {{ $user }}</div>
                                @endforeach
                            @else
                                <p>Tidak ada user.</p>
                            @endif
                            

Fitur Spesial: @realtime

LamdaPHP memiliki direktif unik @realtime. Menambahkan kode ini di bagian bawah <body> akan secara otomatis menyuntikkan skrip JavaScript untuk mengaktifkan fitur Server-Sent Events (SSE).

Penting: Data Binding

Untuk menggunakan fitur ini, Anda wajib menyertakan atribut data-bind pada setiap tag HTML yang ingin dirender secara dinamis atau realtime.

                                <!-- Contoh: Menampilkan jumlah notifikasi secara realtime -->
                                <span data-bind="notif_count">0</span>

                                <!-- Direktif @realtime harus diletakkan di akhir body -->
                                @realtime
                                

*Nilai data-bind ("notif_count") harus sesuai dengan key data yang dikirim oleh server melalui EventDispatcher.