
Daftar Isi
Pernahkah Anda mengisi form di sebuah website, lalu muncul pesan error seperti “Email tidak valid” atau “Kolom wajib diisi”? Nah, di balik pengalaman itu ada satu fitur penting yang disebut validasi form.
Jika Anda sudah mulai belajar Laravel, mungkin Anda sudah tahu sedikit tentang validasi dasar — tapi bagaimana jika kebutuhan validasi semakin kompleks? Misalnya, Anda ingin membuat pesan error kustom, atau melakukan validasi unik di database?
Banyak pemula merasa bingung di tahap ini. “Bagaimana cara menambahkan aturan validasi baru?”, “Bagaimana jika ingin menyesuaikan pesan error-nya?” — semua pertanyaan itu wajar, dan artikel ini akan menjawabnya satu per satu.
Dalam panduan ini, Anda akan belajar:
- Cara menggunakan Form Request untuk validasi yang lebih rapi.
- Membuat pesan validasi kustom sesuai kebutuhan.
- Menggunakan aturan validasi unik dan kompleks.
- Tips terbaik agar validasi Anda tetap bersih, mudah dikelola, dan aman.
Siapkan proyek Laravel Anda, mari kita mulai langkah demi langkah!
1. Menggunakan Form Request untuk Validasi yang Lebih Bersih
Jika sebelumnya Anda menulis validasi langsung di controller seperti ini:
$request->validate([
'name' => 'required',
'email' => 'required|email',
]);
Kini saatnya beralih ke cara yang lebih profesional dan terstruktur — menggunakan Form Request.
Langkah-langkahnya:
- Jalankan perintah berikut di terminal:
php artisan make:request StoreUserRequest - Buka file yang baru dibuat di
app/Http/Requests/StoreUserRequest.php. - Tambahkan aturan validasi di dalam method
rules()seperti berikut:public function rules(): array { return [ 'name' => 'required|string|max:255', 'email' => 'required|email|unique:users,email', 'password' => 'required|min:8|confirmed', ]; } - Pada controller, ubah metode
store()agar menggunakan request ini:public function store(StoreUserRequest $request) { // Data yang sudah tervalidasi otomatis masuk ke sini User::create($request->validated()); return redirect()->back()->with('success', 'Data berhasil disimpan!'); }
Dengan pendekatan ini, kode controller Anda menjadi lebih bersih dan mudah dirawat.
2. Menambahkan Pesan Validasi Kustom
Kadang pesan bawaan Laravel terasa terlalu umum. Untungnya, Anda bisa menggantinya dengan mudah.
Tambahkan method messages() di file Form Request yang sama:
public function messages(): array
{
return [
'name.required' => 'Nama wajib diisi.',
'email.required' => 'Alamat email tidak boleh kosong.',
'email.unique' => 'Email ini sudah terdaftar.',
'password.confirmed' => 'Konfirmasi password tidak cocok.',
];
}
Dengan begitu, Anda bisa memberikan pesan error yang lebih manusiawi dan sesuai dengan gaya bahasa aplikasi Anda.
3. Menggunakan Validasi Unik dan Kondisional
Laravel menyediakan rule unique untuk memastikan data tidak duplikat di database.
Namun, bagaimana jika Anda ingin memperbarui data dan tetap memperbolehkan email lama pengguna?
Gunakan sintaks berikut di rules():
'unique:users,email,' . $this->user->id
Atau, jika menggunakan Form Request, bisa seperti ini:
'email' => [
'required',
'email',
Rule::unique('users', 'email')->ignore($this->user),
],
Anda juga bisa menambahkan validasi kondisional — hanya dijalankan dalam kondisi tertentu:
if ($this->input('role') === 'admin') {
$rules['admin_code'] = 'required';
}
Pendekatan ini membuat validasi Anda dinamis dan fleksibel sesuai kebutuhan.
4. Membuat Custom Validation Rule
Kadang aturan bawaan Laravel belum cukup. Anda bisa membuat aturan validasi sendiri.
- Jalankan perintah:
php artisan make:rule ValidPhoneNumber - Edit file di
app/Rules/ValidPhoneNumber.php:public function passes($attribute, $value) { return preg_match('/^[0-9]{10,13}$/', $value); } public function message() { return 'Nomor telepon harus terdiri dari 10–13 angka.'; } - Gunakan di Form Request:
'phone' => ['required', new ValidPhoneNumber],
Dengan cara ini, Anda bisa membuat validasi yang spesifik dan reusable.
Nah, sekarang Anda sudah menguasai validasi form lanjutan di Laravel — mulai dari Form Request, pesan kustom, validasi unik, hingga membuat rule sendiri.
Semua ini akan membuat aplikasi Anda lebih aman, profesional, dan mudah dikelola.
Ingin melanjutkan ke tahap berikutnya?
👉 Baca juga: [Cara Membuat Middleware di Laravel untuk Keamanan Tambahan]
