Nxdom Framework

Nusantara eXtreme Development Object Model — dokumentasi resmi

Web Applications

Halaman ini menjelaskan pola web server-side: rute di routes/web.php, gerbang FrontendController, controller di controllers/Frontend/, dan template di templates/theme/ (serta varian mobile/tablet). Bacalah setelah Routing & MVC; lanjut ke API untuk JSON di bawah /api/….

routes/web.php · FrontendController · controllers/Frontend/ · NexaDom

Alur dokumen backend

Routing (gambaran web.php + api.php + tiga gerbang) → Web Applications (halaman ini) → API (JSON & ApiController).

Routing frontend dinamis (FrontendController@page)

Pola /{page}/{method?} (bila tidak diserahkan ke route eksplisit di web.php) mengarah ke FrontendController dan kelas di controllers/Frontend/, mis. ProductController@makan_minum.

URL Controller Method
/product ProductController index
/product/makan_minum ProductController makan_minum
/product/makan_minum/nasi-goreng ProductController makan_minum (detail via handleProductDetail)
/product/retail ProductController retail
/seller/username-toko SellerController toko (validasi username_toko)
/mall MallController index

Controllers & NexaController

Base controller

Semua controller turunan memakai NexaController (render, redirect, assignVars, nexaBlock, dll.).

<?php namespace App\Controllers; use App\System\NexaController; class MyController extends NexaController { public function index(array $params = []): void { // Logika di sini } }

Constructor menerima $view (NexaDom) dan $deviceLayouts.

Method penting di NexaController

Method Deskripsi
render($template, $data) Render template dengan layout
redirect($url) Redirect ke URL
assignVar($name, $value) Set satu variabel ke template
assignVars($array) Set banyak variabel
nexaBlock($blockName, $data) Assign data ke blok NEXA
assignBlock($blockName, $data) Alias nexaBlock
divert($page) Ganti layout (theme / mobile / tablet)
getDevice() Info perangkat
getBrowserInfo() Analisis browser & device
url($path) Generate URL
Storage($table) Akses model / database

Alur FrontendController (publik)

index()/, /home, dan turunan melalui nodeController() bila halaman child ada; lalu divert() + render().

page() — pola dinamis /{page}/{method?}; controller anak biasanya hanya assignVars() / nexaBlock(), tanpa memanggil render() sendiri.

Contoh — ExampleController

Selaras Models (query SQL) (useModels + nexaBlock).

// controllers/Frontend/ExampleController.php public function index(array $params = []): void { $this->assignVars([ 'framework' => 'Nexa Dom Framework v2.0.0', 'versi' => 'v2.0.0', ]); $users = $this->useModels('Exasmple', 'data', ['nexa@dom.com']); $this->nexaBlock('food', [ 'title' => 'Nasi Goreng', 'price' => 10000, ...($users ?? []), ]); }

Views & templates

Layouts & path template

Layout Header Footer Penggunaan
theme theme/header.html theme/footer.html Desktop
mobile mobile/header.html mobile/footer.html Mobile
tablet tablet/header.html tablet/footer.html Tablet
dashboard dashboard/header.html dashboard/footer.html Dashboard (Admin)
standalone Tanpa header/footer

Format: templates/desktop/{path}.html

  • render('index')templates/theme/index.html
  • render('example')templates/theme/example/index.html
  • render('product/detail')templates/theme/product/detail.html

Device & variabel di template

FrontendController memakai divert() sebelum render() untuk theme/mobile/tablet.

$device = $this->getDevice(); $analysis = $this->getBrowserInfo(); if ($device['is_mobile']) { // … }

Contoh — templates/theme/example/index.html

<!-- NEXA food --> <div class="item"> <h1>{name}</h1> <div>{email}</div> <h3>{title}</h3> <p>{price|rp}</p> </div> <!-- END food -->
Catatan: Banyak path (mis. /product/…) tidak perlu didaftar di web.php jika ditangani frontend dinamis. Jika path sudah cocok route eksplisit, frontend dinamis tidak mengambil alih. Root / ditangani khusus lewat handleFrontendRoot().

Lanjut

API — ApiController & penangan dinamis · Distribusi (ringkasan) · Model query (SQL)