Memahami Aturan Validasi Kustom
Laravel menyediakan fleksibilitas yang tinggi dalam mendefinisikan aturan validasi. Selain aturan bawaan seperti required
, email
, min
, dan lainnya, kita dapat membuat aturan kustom untuk memenuhi kebutuhan spesifik aplikasi kita. Aturan kustom ini memungkinkan kita untuk melakukan validasi data yang lebih kompleks dan sesuai dengan logika bisnis kita.
Menambahkan Parameter ke Aturan Kustom
Untuk menambahkan parameter ke aturan kustom, kita dapat memanfaatkan closure atau kelas validator. Berikut adalah penjelasan keduanya:
1. Menggunakan Closure
Definisi: Closure adalah fungsi anonim yang dapat kita definisikan langsung di dalam aturan validasi.
Cara Kerja: Kita dapat meneruskan parameter tambahan ke dalam closure ini, lalu melakukan logika validasi di dalamnya.
Contoh:
PHP
Validator::extend('custom_rule', function ($attribute, $value, $parameters, $validator) {
// $parameters[0] akan berisi nilai parameter pertama
// $parameters[1] akan berisi nilai parameter kedua, dst.
return $value > $parameters[0]; // Contoh validasi: nilai harus lebih besar dari parameter pertama
});
Penggunaan:
PHP
$validatedData = Validator::make($data, [ 'field' => 'custom_rule:10', // Parameter 10 akan diteruskan ke closure ])->validate();
2. Menggunakan Kelas Validator
Definisi: Kita dapat membuat kelas validator kustom yang mewarisi dari
Illuminate\Validation\Validator
.Cara Kerja: Dalam kelas ini, kita dapat mendefinisikan metode
validateAttribute
untuk melakukan validasi terhadap atribut tertentu.Contoh:
PHP
class CustomValidator extends Validator
{
public function validateCustomRule($attribute, $value, $parameters, $validator)
{
// Logika validasi dengan menggunakan parameter
return $value === 'value_' . $parameters[0];
}
}
// Penggunaan
Validator::extend('custom_rule', CustomValidator::class . '@validateCustomRule');
Contoh Penggunaan dalam Form Request
PHP
use Illuminate\Foundation\Http\FormRequest;
class StorePostRequest extends FormRequest
{
/**
* Get the validation rules that apply to the request.
*
* @return array
*/
public function rules()
{
return [
'title' => 'required|max:255',
'body' => 'required|min:10|custom_rule:my_custom_value',
];
}
}
Tips Tambahan
Nama Parameter: Parameter yang kita berikan akan tersedia dalam array
$parameters
di dalam closure atau metode validator.Multiple Parameter: Kita dapat meneruskan beberapa parameter dengan memisahkannya menggunakan koma, misalnya
custom_rule:10,20
.Custom Message: Untuk mengatur pesan kesalahan kustom, gunakan metode
replace
pada instance validator.Reuse: Aturan kustom yang telah dibuat dapat digunakan kembali di berbagai tempat dalam aplikasi.
Kesimpulan
Dengan menggunakan aturan validasi kustom, kita dapat membuat validasi yang lebih spesifik dan sesuai dengan kebutuhan aplikasi kita. Fitur menambahkan parameter memungkinkan kita untuk membuat aturan validasi yang lebih dinamis dan fleksibel.