Nxdom Framework

Nusantara eXtreme Development Object Model — dokumentasi resmi

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 agar if di dalam blok tidak “ikut” diproses sebagai if global (blok diproses terpisah nanti).
  • Lalu dijalankan process_if_statements_stable() dan process_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.

Tip: Pastikan variabel yang dipakai di kondisi sudah di-assign sebelum render. Nilai diambil lewat get_variable_value() dari data template global (_tpldata) atau konteks blok saat memproses isi blok.

Lanjut

Sebelumnya: SSI. Berikutnya: Switch. Indeks Helper · Dokumentasi · Beranda.