Controller Helpers adalah kumpulan method yang mempermudah pengembangan aplikasi dengan menyediakan fungsi-fungsi umum yang sering digunakan dalam controller. NexaController menyediakan berbagai helper untuk mempermudah tugas-tugas seperti validasi data, manipulasi string, pengolahan array, dan lainnya.
NexaController menyediakan beberapa helper untuk validasi data:
// Validasi field yang wajib diisi
$missingFields = $this->validateRequiredFields(['name', 'email', 'password']);
// Validasi form dengan aturan validasi
$validationResult = $this->validateForm([
'name' => 'required|min:3',
'email' => 'required|email',
'password' => 'required|min:8'
]);
// Validasi field tunggal
$isEmailValid = $this->validateSingleField('email', 'email', null, 'Email tidak valid');
// Validasi dengan response
$response = $this->validateWithResponse([
'name' => 'required|min:3',
'email' => 'required|email'
]);
// Sanitize input
$cleanInput = $this->sanitize($input);
// Render dengan validasi
$this->renderWithValidation('form', [
'title' => 'Registration Form'
], 'default');
Helper untuk mengelola data form:
// Mendapatkan nilai lama (old value) setelah validasi gagal
$oldName = $this->old('name', '');
$oldEmail = $this->old('email', '');
// Memeriksa apakah ada error untuk field tertentu
$hasNameError = $this->hasError('name');
// Mendapatkan pesan error untuk field tertentu
$nameError = $this->getFieldError('name', '');
// Mendapatkan semua error
$allErrors = $this->getAllErrors();
// Membangun aturan validasi dari array field
$validationRules = $this->buildValidationRules([
'name' => ['required', 'min' => 3],
'email' => ['required', 'email'],
'password' => ['required', 'min' => 8]
]);
Helper untuk mengelola dan memanipulasi data:
// Menetapkan data
$this->setData('user', $user);
$this->setData([
'user' => $user,
'products' => $products
]);
// Menetapkan data array
$this->setDataArray([
'users' => $users,
'products' => $products
]);
// Menetapkan data untuk elemen pertama
$this->setDataFirst($users, 'users');
// Menetapkan data untuk elemen dengan index tertentu
$this->setDataIndex($users, 2, 'users');
// Menetapkan data mentah
$this->setDataRaw($data);
// Menetapkan data untuk loop
$this->setDataLoop($products, 'product_item');
// Menetapkan data dengan mode otomatis
$this->setDataSmart($data);
// Menetapkan nilai
$this->setValue('status', 'active');
$this->setValue([
'status' => 'active',
'role' => 'user'
]);
// Debug struktur data
$structureInfo = $this->debugDataStructure($data);
Helper untuk memfilter dan memanipulasi data konfigurasi:
// Filter data konfigurasi
$filteredData = $this->filterConfigData($configData, 'user', ['name', 'email']);
// Filter data konfigurasi dengan exclude
$filteredData = $this->filterConfigData($configData, 'user', ['password', 'token'], true);
// Multi filter
$filteredData = $this->multiFilterConfigData($configData, [
'user' => ['name', 'email'],
'product' => ['name', 'price']
]);
// Exclude fields
$filteredData = $this->excludeConfigFields($configData, 'user', ['password', 'token']);
// Include fields
$filteredData = $this->includeConfigFields($configData, 'user', ['name', 'email']);
// Merge config data
$mergedData = $this->mergeConfigData([
$userConfig,
$productConfig
], [
'user' => ['name', 'email'],
'product' => ['name', 'price']
]);
// Config builder
$config = $this->configBuilder($data)
->exclude('user', ['password', 'token'])
->include('product', ['name', 'price'])
->get();
// Debug config filter
$this->debugConfigFilter($configData, 'user', ['name', 'email']);
Helper untuk mengelola parameter dengan aman:
// Mendapatkan parameter dengan nilai default
$params = $this->paramsWithDefaults([
'page' => 1,
'limit' => 10,
'sort' => 'name'
]);
// Memeriksa keberadaan parameter
$hasParams = $this->hasParams(['id', 'type']);
// Mendapatkan parameter yang tidak kosong
$nonEmptyParams = $this->nonEmptyParams(['name', 'email']);
// Mendapatkan parameter yang aman
$safeParams = $this->safeParams(['name', 'email']);
$name = $safeParams['name'];
$email = $safeParams['email'];
// Mendapatkan parameter tunggal yang aman
$name = $this->safeParam('name', '');
// Debug safe params
$this->debugSafeParams($safeParams);
Helper untuk memanipulasi string:
// Membuat path
$path = $this->makePath('users/profile');
// Decode Base64 dengan aman
$data = $this->safeBase64Decode($encodedData, null);
// Memeriksa apakah string adalah Base64 valid
$isValid = $this->isValidBase64($string);
// Decode Base64 sederhana
$data = $this->simpleBase64Decode($encodedData, null);
// Memeriksa apakah slug adalah Base64 valid
$isValid = $this->isSlugValidBase64(1);
// Mendapatkan slug yang di-decode
$decodedSlug = $this->getDecodedSlug(1, null);
Helper untuk mengelola file dan path:
// Memeriksa keberadaan file dalam project
$exists = $this->fileExistsInProject('config/app.php');
// Mendapatkan direktori base
$baseDir = $this->getBaseDir();
// Mendapatkan nama project
$projectName = $this->getProjectName();
// Mendapatkan URL base
$baseUrl = $this->getBaseUrl();
// Memeriksa apakah template exists
$exists = $this->isExists('users/profile');
Helper untuk mengelola node controller (sub-controller):
// Memanggil node controller
$result = $this->nodeController('User', ['id' => 1]);
// Memanggil node controller dengan namespace kustom
$result = $this->nodeController('Admin\\User', ['id' => 1], 'App\\Controllers');
// Memanggil controller dengan proxy
$userController = $this->callController('User')
->withParams(['id' => 1])
->method('profile')
->execute();
// Memanggil multiple controllers
$controllers = $this->nodeControllers([
'user' => ['controller' => 'User', 'params' => ['id' => 1]],
'product' => ['controller' => 'Product', 'params' => ['id' => 2]]
]);
// Memeriksa keberadaan controller
$exists = $this->controllerExists('User');
// Mendapatkan controller yang tersedia
$availableControllers = $this->getAvailableControllers();
// Mengatur namespace controller
$this->setControllerNamespace('App\\Controllers\\Admin');
// Debug node controller
$debugInfo = $this->debugNodeController('User', ['id' => 1]);
// Debug node controller render
$this->debugNodeControllerRender('User', ['id' => 1]);
Helper untuk bekerja dengan model:
// Menggunakan model
$user = $this->useModels('User', 'getById', [1]);
// Mendapatkan model yang tersedia
$availableModels = $this->getAvailableModels();
// Debug model
$modelInfo = $this->debugModel('User');
// Menampilkan debug model
$this->debugModelDisplay('User');
// Mendapatkan method model
$methods = $this->getModelMethods('User');
// Menampilkan model yang tersedia
$this->displayAvailableModels();
// Memanggil model dengan state key
$result = $this->callModel('User', 'getById', [1], 'current_user');
// Batch model operations
$results = $this->batchModelOperations([
['model' => 'User', 'method' => 'getById', 'params' => [1]],
['model' => 'Product', 'method' => 'getByUser', 'params' => [1]]
]);
// Clear model cache
$this->clearModelCache('User');
Helper untuk mengelola log:
// Log
$this->log();
// Clear all logs
$result = $this->clearAllLogs();
// Clear logs by date
$result = $this->clearLogsByDate('2023-01-01');
// Clear old logs
$result = $this->clearOldLogs(7);
// Get log info
$logInfo = $this->getLogInfo();
// Display log manager
$this->displayLogManager();
Berikut adalah beberapa praktik terbaik dalam menggunakan controller helpers: