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)
Rule | Deskripsi |
---|---|
required | Wajib diisi |
min_length[3] | Minimal 3 karakter |
max_length[10] | Maksimal 10 karakter |
valid_email | Format email valid |
is_unique[users.email] | Unik di tabel kolom tertentu |
integer | Harus angka bulat |
alpha_numeric | Hanya 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.