If / elseif / else
Kondisional template berbentuk {if …} … {elseif …} … {else} … {endif}. Pada alur render standar, NexaDom memakai jalur stable — evaluasi lewat evaluate_condition_stable() dan evaluate_single_condition_stable().
NexaDom.php · process_if_statements_stable
Sintaks
{if kondisi}
… konten jika benar …
{elseif kondisi_lain}
…
{else}
…
{endif}{elseif} dan {else} opsional. Blok bersarang didukung: parser mencari {endif} yang sepasang dengan menghitung kedalaman {if} (lihat process_if_else_content_stable() untuk pemisahan else/elseif pada level yang sama).
Urutan pemrosesan (render umum)
Pada pparse_content_only() / pipeline template, kondisional global dipanggil lewat process_global_conditionals_stable_skip_blocks():
- Isi di dalam marker blok NEXA
<!-- NEXA nama -->…<!-- END nama -->diganti placeholder sementara agarifdi dalam blok tidak “ikut” diproses sebagai if global (blok diproses terpisah nanti). - Lalu dijalankan
process_if_statements_stable()danprocess_switch_statements_stable().
Ekspresi kondisi (stable)
Fungsi evaluate_condition_stable() mendukung:
| Jenis | Contoh |
|---|---|
| Gabungan logika | a && b, a || b (tiap bagian dievaluasi dengan evaluate_single_condition_stable()) |
| Negasi | !kondisi |
isset / empty |
isset(var), empty(user.name) — argumen bisa memakai notasi titik untuk data bersarang |
| Perbandingan | ===, !==, ==, !=, >, <, >=, <= — sisi kiri/kanan di-resolve_value_stable() (string kutip, angka, true/false/null, atau nama variabel) |
| Variabel saja | flag atau user.role — dianggap benar jika nilai “truthy” (string non-kosong, bukan 'false'/'0', dll.) |
{if user_role == 'admin'}
<p>Panel admin</p>
{elseif isset(user)}
<p>Halo, {user_name}</p>
{else}
<p>Tamu</p>
{endif}API lanjutan (opsional)
Metode publik enable_enhanced_conditionals(&$content) mengganti pemrosesan if dengan process_global_if_conditionals_enhanced() — antara lain kurung untuk grup kondisi, !empty(), dan perbandingan lewat evaluate_enhanced_condition(). Gunakan hanya jika Anda memang mengintegrasikan pemanggilan ini di alur render kustom.
Switch (bersamaan di pipeline)
Setelah if stable, template yang sama bisa memakai {switch variabel} … {case 'x'} … {default} … {endswitch} — diproses oleh process_switch_statements_stable(). Lihat juga dokumentasi blok / variabel untuk nilai yang di-assignVars dari controller.
get_variable_value() dari data template global (_tpldata) atau konteks blok saat memproses isi blok.
Lanjut
Sebelumnya: SSI. Berikutnya: Switch. Indeks Helper · Dokumentasi · Beranda.