NexaDom Template Engine - Dokumentasi Nexa Framework

NexaDom Template Engine

NexaDom adalah mesin template yang powerful untuk Nexa Framework yang memungkinkan pemisahan logika bisnis dan presentasi dengan fitur-fitur canggih.

info Catatan: NexaDom dirancang untuk memudahkan pengembangan tampilan dengan sintaks yang intuitif dan performa yang optimal.

Fitur Utama NexaDom

Variabel dan Blok

  • Penugasan variabel sederhana dan kompleks
  • Blok template dengan iterasi
  • Variabel bersarang dengan notasi titik
  • Filter untuk transformasi output

Logika Template

  • Kondisional (if/else/elseif)
  • Switch statements
  • Operator ternary
  • Sections dan sub-sections

Penggunaan Dasar

NexaDom dapat digunakan langsung dari controller dengan mengikuti pola berikut:


// Di controller
$this->assignVars([
    'title' => 'Halaman Beranda',
    'user' => [
        'name' => 'John Doe',
        'role' => 'admin'
    ]
]);

$this->assignBlocks('posts', $postsData);
$this->render('home/index');
                

Sintaks Template

1. Variabel Sederhana

Variabel sederhana dapat ditampilkan dengan sintaks kurung kurawal:


<h1>{title}</h1>
<p>Selamat datang, {user.name}!</p>
                

2. Variabel Bersarang

Akses variabel bersarang menggunakan notasi titik:


<div>
    Nama: {user.name}
    Role: {user.role}
</div>
                

3. Blok dan Iterasi

Blok template memungkinkan iterasi melalui data array:


<!-- NEXA posts -->
    <div class="post">
        <h2>{title}</h2>
        <p>{content}</p>
        <span>Oleh: {author.name}</span>
    </div>
<!-- END posts -->
                

4. Kondisional

Logika kondisional untuk menampilkan konten secara dinamis:



    <div class="user-view">Tampilan Pengguna</div>

                

5. Switch Statement

Switch statement untuk multiple conditions:



        <span class="badge bg-secondary">Tidak diketahui</span>

                

6. Operator Ternary

Sintaks singkat untuk kondisional sederhana:


<span class="text-danger">
    Nonaktif
</span>
                

7. Sections

Sections memungkinkan pengelompokan konten yang dapat diaktifkan/nonaktifkan:


<!-- START_SECTION admin_panel -->
    <div class="admin-tools">
        <h3>Admin Tools</h3>
        <!-- Konten panel admin -->
    </div>
<!-- STOP_SECTION admin_panel -->
                

8. Filter

Filter memungkinkan transformasi output variabel:


<p>{username|upper}</p> <!-- Output dalam huruf besar -->
<p>{description|truncate:100}</p> <!-- Potong teks ke 100 karakter -->
<p>{price|number_format:2}</p> <!-- Format angka dengan 2 desimal -->
<p>{html_content|escape}</p> <!-- Escape HTML entities -->
                

Integrasi dengan NexaAsset

NexaDom terintegrasi dengan NexaAsset untuk manajemen path aset:


<link rel="stylesheet" href="/assets/css/style.css">
<script src="/assets/js/app.js"></script>
<img src="/assets/images/logo.png" alt="Logo">
                

API NexaDom

Berikut adalah metode utama yang tersedia dalam NexaDom:

Metode Deskripsi Contoh
assign_var(string $varname, $varval) Menugaskan variabel tunggal $nexa->assign_var('title', 'Halaman Beranda');
assign_vars(array $vararray) Menugaskan multiple variabel $nexa->assign_vars(['title' => 'Beranda', 'user' => $userData]);
assign_block_vars(string $blockname, array $data) Menugaskan data untuk blok template $nexa->assign_block_vars('posts', $postsData);
assign_blocks(array $blocks) Menugaskan multiple blok sekaligus $nexa->assign_blocks(['posts' => $posts, 'comments' => $comments]);
pparse(string &$content) Memproses konten template $output = $nexa->pparse($templateContent);
pparse_file(string $varfile) Memproses file template $output = $nexa->pparse_file('templates/home.html');

Tips dan Best Practices

Performa

  • Gunakan assign_blocks() untuk menugaskan multiple blok sekaligus
  • Hindari pemrosesan template berulang dalam loop
  • Gunakan filter untuk transformasi daripada logika PHP

Keamanan

  • Selalu gunakan filter escape untuk output yang berasal dari input pengguna
  • Hindari eksekusi kode PHP langsung dalam template
  • Validasi data sebelum diteruskan ke template

Contoh Lengkap

Berikut adalah contoh lengkap penggunaan NexaDom dalam aplikasi:


// Controller
public function dashboard(): void
{
    // Assign variabel sederhana
    $this->assignVars([
        'page_title' => 'Dashboard',
        'current_user' => [
            'name' => 'John Doe',
            'role' => 'admin',
            'is_active' => true
        ]
    ]);
    
    // Assign data blok
    $this->assignBlocks([
        'notifications' => $this->notificationModel->getLatest(),
        'recent_activities' => $this->activityModel->getRecent()
    ]);
    
    // Render template
    $this->render('dashboard/index');
}
                

<!-- Template: dashboard/index.html -->
<div class="dashboard">
    <h1>dom template engine</h1>
    
    <div class="user-info">
        <p>Selamat datang, {current_user.name}!</p>
        <span class="badge bg-danger">
            Nonaktif
        </span>
    </div>
    
    
    
    <h2>Notifikasi Terbaru</h2>
    <div class="notifications">
        <!-- NEXA notifications -->
            <div class="notification {type}">
                <h4>{title}</h4>
                <p>{message|truncate:100}</p>
                <small>{date|date_format:'d M Y H:i'}</small>
            </div>
        <!-- END notifications -->
    </div>
    
    <h2>Aktivitas Terbaru</h2>
    <div class="activities">
        <!-- NEXA recent_activities -->
            <div class="activity">
                <p>
                    
                            <i class="material-icons">info</i> Lainnya
                    
                    
                    <strong>{user.name}</strong> {description}
                    <small></small>
                </p>
            </div>
        <!-- END recent_activities -->
    </div>
</div>
                

Kesimpulan

NexaDom adalah mesin template yang powerful dan fleksibel yang menyediakan berbagai fitur untuk memisahkan logika bisnis dan presentasi. Dengan sintaks yang intuitif dan integrasi dengan komponen lain dari Nexa Framework, NexaDom memungkinkan pengembangan tampilan yang efisien dan terstruktur.

lightbulb Pro Tip: Kombinasikan NexaDom dengan NexaAsset untuk manajemen aset yang efisien dan NexaForm untuk validasi form yang terintegrasi.