NexaDom adalah mesin template yang powerful untuk Nexa Framework yang memungkinkan pemisahan logika bisnis dan presentasi dengan fitur-fitur canggih.
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');
Variabel sederhana dapat ditampilkan dengan sintaks kurung kurawal:
<h1>{title}</h1>
<p>Selamat datang, {user.name}!</p>
Akses variabel bersarang menggunakan notasi titik:
<div>
Nama: {user.name}
Role: {user.role}
</div>
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 -->
Logika kondisional untuk menampilkan konten secara dinamis:
<div class="user-view">Tampilan Pengguna</div>
Switch statement untuk multiple conditions:
<span class="badge bg-secondary">Tidak diketahui</span>
Sintaks singkat untuk kondisional sederhana:
<span class="text-danger">
Nonaktif
</span>
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 -->
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 -->
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">
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'); |
assign_blocks()
untuk menugaskan multiple blok sekaligusescape
untuk output yang berasal dari input penggunaBerikut 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>
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.