Lewati ke konten utama

Validation di CodeIgniter

Validasi (Validation) digunakan untuk memastikan data yang diterima dari pengguna sesuai dengan aturan yang ditetapkan sebelum diproses lebih lanjut, seperti disimpan ke database.


1. Cara Menggunakan Validation

Validation di CodeIgniter dapat digunakan di dalam controller melalui service:

$validation = \Config\Services::validation();

Atau otomatis melalui method validate() dari BaseController.


2. Contoh Sederhana Validasi Form

a. Controller

public function simpan()
{
$validationRules = [
'nama' => 'required|min_length[3]',
'email' => 'required|valid_email',
];

if (! $this->validate($validationRules)) {
return view('form', [
'validation' => $this->validator,
]);
}

// Lanjut proses simpan
}

3. Menampilkan Error di View

<?php if (isset($validation)): ?>
<div class="alert alert-danger">
<?= $validation->listErrors() ?>
</div>
<?php endif; ?>

4. Aturan Validasi (Validation Rules)

RuleDeskripsi
requiredWajib diisi
min_length[3]Minimal 3 karakter
max_length[10]Maksimal 10 karakter
valid_emailFormat email valid
is_unique[users.email]Unik di tabel kolom tertentu
integerHarus angka bulat
alpha_numericHanya huruf dan angka

5. Custom Pesan Error

$validationRules = [
'nama' => [
'rules' => 'required|min_length[3]',
'errors' => [
'required' => 'Nama wajib diisi.',
'min_length' => 'Nama minimal 3 karakter.',
],
],
];

6. Validasi dalam Model

Jika menggunakan CodeIgniter\Model, validasi bisa didefinisikan di dalam model:

protected $validationRules = [
'nama' => 'required|min_length[3]',
'email' => 'required|valid_email|is_unique[users.email]',
];

protected $validationMessages = [
'email' => [
'is_unique' => 'Email sudah terdaftar.',
],
];

Validasi otomatis berjalan saat insert() atau update() dipanggil.


7. Validasi Custom Callback

Buat di controller atau library:

public function username_check(string $str, string $fields, array $data): bool
{
return $str !== 'admin';
}

Gunakan dalam rules:

'nama' => 'required|callback_username_check',

8. Validasi Multi-Field

$validationRules = [
'password' => 'required',
'konfirmasi_password' => 'matches[password]',
];

9. Validasi File Upload

$validationRules = [
'foto' => 'uploaded[foto]|is_image[foto]|max_size[foto,1024]',
];

10. Validasi Nested Input (Array)

$validationRules = [
'produk.*.nama' => 'required',
'produk.*.harga' => 'required|numeric',
];

Dengan fitur validasi yang fleksibel, CodeIgniter memudahkan pengembang untuk memastikan input pengguna selalu aman dan sesuai dengan aturan bisnis.