Nxdom Framework

Nusantara eXtreme Development Object Model — dokumentasi resmi

Routing & MVC

Pengantar umum cara permintaan masuk ke aplikasi: dua berkas rute (routes/web.php untuk HTML publik, routes/api.php untuk JSON/API), lalu tiga gerbang controllerFrontendController, ApiController, dan AdminController — yang masing-masing mendelegasikan ke folder Frontend/, Api/, dan Admin/. Halaman ini melengkapi urutan menu Backend: setelah Memulai dan CLI Nxdom, lanjut ke gambaran besar routing sebelum topik API & Web Applications di ringkasan dokumentasi.

routes/web.php · routes/api.php · FrontendController · ApiController · AdminController

$nexa = Nexa::getInstance(); $nexa->Tatiye()->run(); // → NexaRouter::handle()

Dua berkas rute

Satu instance NexaRouter memuat semua definisi dari routes/web.php lalu routes/api.php (urutan muat di Nexa::Tatiye()). Pisahkan peran secara konseptual:

  • Web Applications — URL yang diakses browser untuk halaman HTML, redirect auth, dan path yang mengarah ke FrontendController (atau controller terdaftar eksplisit seperti Frontend/BlogController@detail). Detail: dokumentasi Web Applications.
    $router->add('/', 'FrontendController@index'); $router->add('/home', 'FrontendController@index'); $router->get('{Y}/{params}', 'Frontend/BlogController@detail');
  • API — URL ber-prefix /api/… yang mengeluarkan JSON (Content-Type: application/json), umumnya lewat ApiController@index atau endpoint khusus di App\Controllers\Api\. Detail: dokumentasi API.
    $router->add('/api/google-signin', 'Api/GoogleAuthController@signin', ['POST']); // … endpoint spesifik di atas, lalu penangkap umum: $router->any('/api', 'ApiController@index'); $router->any('/api/{params}', 'ApiController@index');
API: di api.php, daftar route spesifik (mis. satu URL + method) sebaiknya di atas route generik /api/{params} agar tidak tertelan oleh penangan umum.

Tiga gerbang controller

Setelah request melewati NexaRouter::handle(), aksi sering sampai ke salah satu tiga controller induk. Masing-masing mengatur setControllerNamespace() lalu memanggil nodeController() / logika setara untuk kelas di subfolder:

Gerbang Namespace anak Peran ringkas Terhubung ke
FrontendController App\Controllers\Frontend\ Halaman publik HTML; index() untuk / & turunan; page() untuk pola /{page}/{method?}. routes/web.php, frontend dinamis
ApiController App\Controllers\Api\ Respons JSON, CORS, OPTIONS preflight; memetakan /api/… ke FooController di folder Api. routes/api.php (ApiController@index + endpoint eksplisit)
AdminController App\Controllers\Admin\ Dashboard pengguna login: /{username}, /{username}/{page}/…; layout dashboard. Session / slug user (prioritas router), lalu Admin\…

ApiController pada index() menormalisasi parameter, mengatur header JSON/CORS, lalu mendelegasikan ke controller di App\Controllers\Api\ (atau alur SDK jika ada header Authorization). AdminController memvalidasi slug user di index()/page(), menyiapkan data global sidebar, lalu merender template di templates/dashboard/.

Bootstrap & router

Di index.php / system/Nexa.php: Nexa::getInstance() menyiapkan request dan router; Tatiye() memuat kedua berkas rute; run() memanggil NexaRouter::handle(). Inti pencocokan URL ada di system/NexaRouter.php. Router juga mendaftarkan aset template dan folder statis (mis. /assets/…, /drive) — bukan hanya isi web.php.

Variabel template global (termasuk base_url) di-assign ke NexaDom saat router diinisialisasi di Nexa — selaras dengan NexaController::init().

Parameter, prioritas & frontend dinamis

Named parameters & constraint

Placeholder pada path (mis. di web.php) dipetakan ke pola oleh NexaRouter:

Parameter Regex Contoh
[0-9]+ /user/123
{slug} [a-z0-9-]+ /post/hello-world
{uuid} UUID /item/550e8400-e29b-41d4-a716-446655440000
{params} .+ Beberapa segmen
{Y} [0-9]{4} /blog/2026/…

Urutan prioritas routing

Ringkasnya, di NexaRouter::handle():

  1. Session-based / dashboard — jika pengguna login dan segmen URL cocok user_slugAdminController (area Admin\).
  2. Frontend dinamistryFrontendRouting() untuk path non-API: bila tidak ada route eksplisit yang cocok di web.php, alur ke FrontendController@page (root khusus ke index()).
  3. Pencocokan reguler — mencoba route terdaftar dari web.php lalu api.php (termasuk yang mengarah ke controller lain).
Pengguna login di halaman publik: FrontendController::page() dapat mengalihkan ke /{username}/…; tabel contoh di bawah mengasumsikan pengunjung belum login.

Lanjut backend