Langsung ke konten utama

Cara Membuat Custom Validation Rule di Laravel 12 yang Efektif

Pendahuluan

Bayangin lagi ngerjain fitur sederhana, tapi validasi bawaan Laravel kayak 'required' atau 'email' ternyata nggak cukup buat nge-handle logic bisnis yang unik di aplikasi kamu. Biasanya, kita bakal tergoda buat naruh logic validasi langsung di dalam Controller, yang akhirnya malah bikin file controller jadi gemuk dan susah dibaca. Padahal, Laravel sudah nyediain cara elegan buat memisahkan logic ini biar kode kamu tetep rapi dan bisa dipakai ulang.

Tips & Best Practices

Di banyak project, biasanya saya mulai dari menempatkan rule di folder app/Rules agar rapi sejak awal daripada bikin anonymous rule yang bikin controller berantakan. Saat tim makin besar, saya selalu menyarankan untuk mendokumentasikan setiap class rule lewat komentar yang jelas supaya rekan setim nggak bingung pas maintenance. Terakhir, saya terbiasa buat memastikan rule tersebut tetap stateless—nggak bergantung pada data di luar input yang divalidasi—supaya testability-nya terjaga dengan baik.

Contoh Kode

Katakanlah kamu punya kasus validasi username yang harus mengandung karakter khusus. Cukup generate via artisan php artisan make:rule UppercaseUsername, lalu implementasikan logic-nya seperti ini:

public function validate(string $attribute, mixed $value, Closure $fail): void { if (!str_contains($value, '#')) { $fail('Username harus mengandung simbol #'); } }

Setelah itu, tinggal panggil di FormRequest atau Controller: 'username' => ['required', new UppercaseUsername].

Variasi Implementasi

Kalau logic validasinya simpel banget, pake Rule::macro atau Closure di controller itu oke-oke aja biar cepet. Tapi, pas validasi itu butuh akses ke database (misal: cek kuota user), class-based rule jauh lebih unggul karena bisa di-inject dependency-nya via constructor. Jangan paksain pake class kalau cuma buat ngecek format string sederhana.

Kesalahan Umum

1. Naruh query database yang berat di dalam method validate tanpa caching, yang bikin aplikasi lemot pas validasi jalan. 2. Lupa nambahin pesan error kustom, sehingga user dapet pesan default yang nggak informatif. 3. Bikin rule yang terlalu spesifik buat satu form, padahal bisa dibuat lebih general. 4. Nggak ngetest rule dengan input edge-case kayak null atau tipe data yang aneh. 5. Terlalu banyak bikin class kecil yang sebenernya bisa disatuin jadi satu rule yang parametrik.

Ringkasan

Membuat custom validation rule itu investasi jangka panjang buat kesehatan codebase. Jangan biarin logika bisnis yang rumit berserakan di controller, karena pas nanti ada perubahan requirement, kamu bakal berterima kasih sama diri sendiri yang udah rapihin logic validasi di tempat yang seharusnya.

Komentar

Postingan populer dari blog ini

Fungsi lain tombol penerima panggilan di headset

Kegunaan tombol yang berada di headset utamanya adalah untuk menerima panggilan dan pause panggilan. Dan headset itu sendiri, kadang juga digunakan untuk mendengarkan music, digunakan bersama saat main game, supaya suara yang dikeluarkan oleh gadget tidak terlalu keras sehingga mengurangi beban gadget. Dengan mengurangi beban gadget, ada beberapa yang beranggapan kalau itu akan menghemat batere.

Cara Reset Password Database MySQL Menggunakan Laragon

Cara Reset Password Database MySQL Menggunakan Laragon Laragon adalah salah satu lingkungan pengembangan lokal (local development environment) yang populer di antara para pengembang web. Dalam beberapa kasus, mungkin kita perlu mereset password database MySQL pada Laragon jika lupa password atau untuk alasan keamanan tertentu. Berikut adalah langkah-langkah yang dapat kita ikuti untuk melakukan reset password database MySQL menggunakan Laragon:

Apa Itu R dan L di Headset? Ini Dia Perbedaan dan Fungsinya yang Perlu Anda Ketahui

Arti R dan L di Headset: Apa Perbedaannya? Headset adalah alat yang digunakan untuk mendengarkan suara dari sumber audio seperti ponsel, komputer, atau pemutar musik. Headset biasanya terdiri dari dua bagian, yaitu earphone yang dimasukkan ke dalam telinga dan mikrofon yang digunakan untuk berbicara. Pada earphone, kita sering melihat ada tulisan R dan L. Apa arti dan perbedaan dari kedua huruf tersebut?