Nxdom Framework

Nusantara eXtreme Development Object Model — dokumentasi resmi

Loops & blok NEXA

Data berulang dari controller di-render sebagai blok NEXA — komentar HTML <!-- NEXA nama --> … <!-- END nama -->, diisi oleh assign_block_vars() dan process_nexa_blocks_optimized(). Terpisah dari itu ada NX_BLOG (ENDEX) dan section lama (START_SECTION / STOP_SECTION).

NexaDom.php · process_nexa_blocks_optimized pparse_block

Blok NEXA (loop utama)

Nama blok hanya memakai [A-Za-z0-9_]. Pola regex di kode: <!-- NEXA ([A-Za-z0-9_]*) -->…<!-- END \1 -->. Data harus ada di _tpldata dengan kunci yang sama (case-insensitive saat diproses).

<!-- NEXA products --> <div class="product"> <h3>{name}</h3> <p>{price}</p> </div> <!-- END products -->

Bukan sintaks lama <!-- BEGIN nama --> — gunakan NEXA dan penutup <!-- END nama --> persis sama nama bloknya.

Data dari controller

assign_block_vars(string $varblock, array $vararray) mendukung satu baris asosiatif atau array of arrays (beberapa baris). Kosongkan array jika tidak ada data — blok tidak di-expand.

$this->template->assign_block_vars('products', [ ['name' => 'A', 'price' => 100], ['name' => 'B', 'price' => 200], ]);

Untuk struktur bertingkat dari sumber data, gunakan assign_nested_data(string $varblock, array $data) sesuai kebutuhan (mendukung notasi titik di variabel template).

Variabel otomatis per baris

Di pparse_block() setiap iterasi memperkaya data baris dengan antara lain: _index (0-based), _number / no / number (1-based), _count, _first, _last, _odd, _even, serta index. Gunakan di template seperti {_number} atau {name|upper} (filter).

Blok bersarang

process_nexa_blocks_optimized() memproses sub-blok NEXA di dalam isi blok luar terlebih dahulu, lalu mengulang blok luar. Pastikan nama sub-blok dan assign_block_vars konsisten.

NX_BLOG (section berulang, penutup ENDEX)

Terpisah dari NEXA: pola <!-- NX_BLOG section_name -->…<!-- ENDEX section_name -->. Data umum: kunci NX_BLOG_{section_name} di _tpldata (atau fallback awalan nx_blog_{section_name}). Diproses oleh process_nx_blog_blocks() setelah blok NEXA. Di dalam blok NEXA, process_nx_blog_blocks_with_parent() dapat menggabungkan data baris parent dengan item NX_BLOG.

START_SECTION / STOP_SECTION (legacy)

process_sections_optimized() memakai <!-- START_SECTION nama -->…<!-- STOP_SECTION nama --> dan sub-pola START_SUB/STOP_SUB, START_CHILD/STOP_CHILD. Ini mengandalkan variabel global PHP dengan nama yang sama dengan section (bukan assign_block_vars). Khusus START_SECTION donot_compress konten dibiarkan utuh. Untuk pola baru, utamakan blok NEXA + data template.

Urutan pipeline (ringkas)

Pada render utama: SSI → kondisional global (melewati isi blok) → ternary → NEXANX_BLOGSTART_SECTION → aset → variabel modern → bahasa → … Blok isi di-parse lagi di dalam pparse_block (kondisional per baris, variabel, NX_BLOG dengan parent, dll.).

Lanjut

Sebelumnya: Switch. Berikutnya: Array bersarang (flatten). Indeks Helper · Models & nexaBlock · Dokumentasi · Beranda.