Nxdom Framework

Nusantara eXtreme Development Object Model — dokumentasi resmi

Models & blok view

Dari kelas NexaModel di models/ dipanggil lewat useModels(), hasilnya digabung ke data nexaBlock(), lalu dirender di template NexaDom — satu alur contoh nyata di proyek ini.

models/ · useModels() · nexaBlock() · ExampleController

Exasmple::data() useModels() nexaBlock('food')

Alur baca backend

RoutingWeb ApplicationsModels (halaman ini) → Storages.

Alur ringkas

Controller memanggil method di model lewat useModels('NamaModel', 'namaMethod', [argumen]) — misalnya method yang menyiapkan data dari tabel news untuk judul, isi, atau tanggal publikasi. Hasil itu bisa digabung dengan field lain lewat spread array PHP, lalu dikirim ke template sebagai satu blok dengan nama yang sama dengan komentar <!-- NEXA nama_blok --> memakai nexaBlock('nama_blok', $data). Cara kerja penyimpanan, koneksi database, dan pola Storage() dibahas di Storages (dan modul Storage & API backend).

Contoh di repositori: controllers/Frontend/ExampleController.php, models/Exasmple.php, templates/theme/example/index.html. Nama kelas model contoh memakai ejaan Exasmple (sesuai file di proyek).
Tahap Keterangan
NexaModel Kelas di models/ mewarisi App\System\NexaModel; method bisnis bisa membaca/menulis data — contoh: mengelola baris tabel news untuk halaman berita.
useModels() Memuat model, memanggil method, mengembalikan hasil ke controller (lihat NexaController::useModels).
ExampleController Contoh nyata di controllers/Frontend/ExampleController.php: method index() memanggil assignVars, useModels, dan nexaBlock — view-nya templates/theme/example/index.html.
nexaBlock() Memanggil assign_block_vars di NexaDom — mengisi placeholder di blok template.
View Blok <!-- NEXA food --><!-- END food --> memakai {name}, {price|rp}, dll.

Model — Exasmple::data()

Method menerima string (di sini alamat email pencarian) dan mengembalikan array asosiatif yang nanti dipakai di template.

<?php namespace App\Models; use App\System\NexaModel; class Exasmple extends NexaModel { public function data(string $search): ?array { return [ 'name' => 'John Doe', 'email' => $search, ]; } }

Controller — ExampleController

App\Controllers\Frontend\ExampleController mewarisi NexaController. Method index() adalah contoh utuh: assignVars() mengisi variabel template global (mis. framework, vesri); useModels('Exasmple', 'data', […]) mengambil array dari model; nexaBlock('food', […]) mengisi blok NexaDom bernama food. Hasil model disisipkan dengan spread ...($users ?? []) ke dalam array yang sama dengan title dan price.

Halaman contoh biasanya dibuka lewat frontend routing ke path seperti /example (template example/index) — rincian ada di Routing dan Web Applications.

<?php declare(strict_types=1); namespace App\Controllers\Frontend; use App\System\NexaController; class ExampleController extends NexaController { public function index(array $params = []): void { $this->assignVars([ 'framework' => 'Nexa Dom Framework v2.0.0', 'vesri' => 'v2.0.0', ]); $users = $this->useModels('Exasmple', 'data', ['nexa@dom.com']); $this->nexaBlock('food', [ 'title' => 'Nasi Goreng', 'price' => 10000, ...($users ?? []) ]); } }

Setelah di-merge, blok food memuat kunci: title, price, name, email — siap dipakai di view. Untuk method model yang memakai Storage() (mis. newsById), pola useModels sama; detail DB di Storages.

View — blok food

Template di templates/theme/example/index.html mendefinisikan blok dengan nama yang sama dengan argumen pertama nexaBlock (di sini food).

<!-- NEXA food --> <div class="item"> <h1>{name}</h1> <div>{email}</div> <h3>{title}</h3> <p>{price|rp}</p> </div> <!-- END food -->

{price|rp} memakai filter NexaDom untuk format rupiah. Variabel, blok, dan filter dijelaskan lebih jauh di dokumentasi dan modul terkait; lapisan query SQL ada di Model query (SQL).

Referensi singkat useModels

  • Argumen 1: nama kelas model (tanpa .php), namespace App\Models implisit — subfolder didukung dengan notasi seperti 'Access/Akun'.
  • Argumen 2: nama method yang dipanggil pada instance model.
  • Argumen 3: array parameter yang di-forward ke method (urutan sama seperti pemanggilan biasa).

Untuk pola lanjutan (refParams, useParams, events, middleware) setelah Storages, lanjut ke Events & injection.

Lanjut

Storages — NexaDb & Storage() · Web Applications · Storage & API backend (modul)