Controller dalam NexaUI adalah komponen yang menangani request HTTP, memproses input dari user, berinteraksi dengan model untuk mengakses data, dan mengembalikan response yang sesuai. Controller bertindak sebagai penghubung antara Model dan View dalam arsitektur MVC.
NexaController
adalah base class untuk semua controller dalam aplikasi NexaUI.
Class ini menyediakan berbagai method dan property yang memudahkan pengembangan aplikasi.
namespace App\Controllers;
use App\System\NexaController;
class UserController extends NexaController
{
public function index(): void
{
$this->render('users/index');
}
}
Berikut adalah siklus hidup controller dalam NexaUI:
NexaController menyediakan berbagai method dasar yang sering digunakan:
render(string $template, array $data = [], bool $return = false)
- Merender templateredirect(string $url, int $statusCode = 302)
- Melakukan redirect ke URL laingetParam(string $key, $default = null)
- Mendapatkan parameter dari requestgetPost(string $key = null, $default = null)
- Mendapatkan data POSTgetGet(string $key = null, $default = null)
- Mendapatkan data GETisPost()
- Mengecek apakah request adalah POSTisGet()
- Mengecek apakah request adalah GETisAjax()
- Mengecek apakah request adalah AJAXController dapat memanipulasi template dengan berbagai method:
assignVar(string $name, $value)
- Menetapkan variabel untuk templateassignVars(array $vars)
- Menetapkan multiple variabelassignBlock(string $blockName, array $data)
- Menetapkan data untuk block templatesetLayout(string $layout)
- Mengatur layout yang digunakan
public function profile(): void
{
$userId = $this->getParam('id');
$user = $this->useModels('User', 'getById', [$userId]);
$this->assignVars([
'user' => $user,
'page_title' => 'User Profile'
]);
$this->render('users/profile');
}
Berikut adalah beberapa praktik terbaik dalam menggunakan controller:
init()
untuk melakukan setup yang diperlukan untuk semua actionredirect()
untuk mengarahkan user setelah form submissionvalidateForm()
isAjax()
untuk mendeteksi request AJAX dan berikan response yang sesuaisetFlash()
untuk menyimpan pesan yang akan ditampilkan pada request berikutnya