Validation (Form Doğrulama) Kütüphanesi

Validation (Form Doğrulama) kütüphanesi, post, get, request, vb. yöntemlerle gelen verilerin sunucu tarafında kontrol edip belirlenen kriterlere uymasını zorunlu tutar. Bu kriterlere uymayan durumları kullanıcıya bildirir.

  1. Doğrulama Kuralı Tanımlama » rule(), rules()
  2. Doğrulama Verisi Tanımlama » data(), bulkData()
  3. Doğrulama İşlemini Gerçekleştirme » isValid()
  4. Doğrulama Hatalarına Erişme » errors()
  5. Doğrulama Kuralları

Doğrulama Kuralı Tanımlama

Form doğrulama işleminde uygulanacak olan kontrol kuralları rules() ya da rule() methodları kullanılarak tanımlanır.


# rule()

Tek bir form elemanına doğrulama kuralı tanımlamak için kullanılır. Doğrulama anahtarı, doğrulanacak veri adı ve doğrulama kuralı parametre olarak verilir.

Parametre Veri Tipi Açıklama
$key String Doğrulama anahtarı
$name String Doğrulanacak veri adı
$rules String Doğrulama kuralları
// Kullanıcı adı alanı gerekli ve en az 3 karakter olmalı
Validation::rule('username', 'Kullanıcı Adı', 'required|min_len,3');

# rules()

Birden fazla form elemanına doğrulama kuralı tanımlamak için kullanılır. Doğrulama anahtarı, doğrulanacak veri adı ve doğrulama kuralı bilgilerinin bulunduğu array parametre olarak verilir. Array içerisinde field, label ve rules key alanları yer almalıdır.

$kurallar = [
	'username'	=> [
		'label' => 'Kullanıcı Adı',
		'rules'	=> 'required|min_len,3'
	],
	'userpass'	=> [
		'label'	=> 'Kullanıcı Şifresi',
		'rules'	=> 'required|min_len,8'
	]
];

Validation::rules($kurallar);

Doğrulama Verisi Tanımlama

Tanımlanan doğrulama kurallarına tabi tutulacak veriler data() ya da bulkData() methodları ile tanımlanır.


# data()

Tek bir form elemanına ait doğrulama verisi tanımlamak için kullanılır. Doğrulama anahtarı ve formdan gelen veri parametre olarak verilir.

ÖNEMLİ: Doğrlama anahtarı, doğrulama kuralı tanımlarken belirlenen anahtar ile aynı olmalıdır.

Parametre Veri Tipi Açıklama
$key String Doğrulama anahtarı
$value String Formdan gelen veri
Validation::data('username', Request::post('username'));

# bulkData()

Birde fazla form elemanına ait doğrulama verisi tanımlamak için kullanılır. Doğrulama anahtarı ve formdan gelen verinin bulunduğu array parametre olarak verilir.

ÖNEMLİ: Doğrlama anahtarı, doğrulama kuralı tanımlarken belirlenen anahtar ile aynı olmalıdır.

$veriler = [
	'username'	=> Request::post('username'),
	'userpass'	=> Request::post('userpass')
];

Validation::bulkData($veriler);

Doğrulama İşlemini Gerçekleştirme

Doğrulama kuralları ve doğrulanacak veriler tanımlandıktan sonra doğrulama işlemini gerçekleştirmek için isValid() methodu kullanılır. Form verileri, tanımlanan tüm doğrulama kurallarına uyuyor ise true, herhangi birine uymuyor ise false döndürür.

if (Validation::isValid())
	echo 'Form verileri doğrulandı';
else
	echo 'Form verileri doğrulanamadı';

Doğrulama Hatalarına Erişme

Validation(Doğrulama) işlemi sonucunda, doğrulama kurallarına uymayan verilerin hata mesajlarını almak için errors() methodu kullanılır. Array tipinde sonuç döndürür.

if (Validation::isValid())
	echo 'Form verileri doğrulandı';
else
	print_r(Validation::errors());

Doğrulama Kuralları

Kural Açıklama
required İlgili form nesnesinin doldurulmasını zorunlu tutar.
nullable İlgili form nesnesinin boş bırakılabilmesini sağlar. Nesne boş değil ise, birlikte tanımlanan diğer kurallar dikkate alınır.
numeric Veri yalnıza numeric karakterler içerebilir.
email Veri geçerli bir e-posta adresi olmak zorundadır.
min_len Verinin karakter sayısı minimum belirtilen sayı kadar olmalıdır. Uzunluk belirtilirken kriter isminden sonra virgül konulup istenen rakam girilir.
max_len Verinin karakter sayısı maximum belirtilen sayı kadar olmalıdır. Uzunluk belirtilirken kriter isminden sonra virgül konulup istenen rakam girilir.
exact_len Verinin karakter sayısı belirtilen sayı kadar olmalıdır. Uzunluk belirtilirken kriter isminden sonra virgül konulup istenen rakam girilir.
alpha Veri yalnızca harf içerebilir (A-Z).
alpha_num Veri yalnızca harf ve rakam içerebilir (A-Z | 0-9).
alpha_dash Veri yalnızca harf, rakam, altçizgi ve dash karakterleri içerebilir (A-Z | 0-9 | _-)
alpha_space Veri yalnızca harf, rakam ve boşluk karakterleri içerebilir (A-Z | 0-9 | )
integer Veri integer tipinde olmalıdır.
boolean Veri boolean tipinde olmalıdır.
float Veri float(ondalık sayı) tipinde olmalıdır.
valid_url Veri geçerli bir URL formatında olmalıdır.
valid_ip Veri geçerli bir IP adresi olmalıdır.
valid_ipv4 Veri IPv4 formatında olmalıdır.
valid_ipv6 Veri IPv6 formatında olmalıdır.
valid_cc Veri geçerli bir kredi kartı numarası olmalıdır.
contains Veri belirtilen karakter ya da karakter grubunu içermelidir. İçermesi istenen karakterler, virgülden sonra belirtilir.
min_numeric Veri tamsayı olmalı ve belirtile değerden küçük olmamalıdır.
max_numeric Veri tamsayı olmalı ve belirtile değerden büyük olmamalıdır.
matches İki form elemanına girilen verileri karşılaştırır.

Örnek kullanımlar aşağıdaki gibidir;

// Örnek kullanım
Validation::rule('field', 'label', 'required');
Validation::rule('field', 'label', 'nullable|numeric') // Boş bırakılabilir. Doldurulursa numeric olmalıdır.
Validation::rule('field', 'label', 'numeric');
Validation::rule('field', 'label', 'email');
Validation::rule('field', 'label', 'min_len,6'); // Minimum 6 karakter uzunluğunda olmalı
Validation::rule('field', 'label', 'max_len,6'); // Maximum 6 karakter uzunluğunda olmalı
Validation::rule('field', 'label', 'exact_len,6'); // Tam olarak 6 karakter uzunluğunda olmalı
Validation::rule('field', 'label', 'alpha');
Validation::rule('field', 'label', 'alpha_num');
Validation::rule('field', 'label', 'alpha_dash');
Validation::rule('field', 'label', 'alpha_space');
Validation::rule('field', 'label', 'integer');
Validation::rule('field', 'label', 'boolean');
Validation::rule('field', 'label', 'float');
Validation::rule('field', 'label', 'valid_url');
Validation::rule('field', 'label', 'valid_ip');
Validation::rule('field', 'label', 'valid_ipv4');
Validation::rule('field', 'label', 'valid_ipv6');
Validation::rule('field', 'label', 'valid_cc');
Validation::rule('field', 'label', 'contains,elma'); // ilgili alan 'elma' kelimesini içermelidir
Validation::rule('field', 'label', 'min_numeric,5'); // Form verisi 5 ten küçük olamaz
Validation::rule('field', 'label', 'max_numeric,5'); // Form verisi 5 ten büyük olamaz

// Matches kuralı kullanımı
// Password alanı boş bırakılamaz ve en az 8 karakter olmalıdır.
Validation::rule('password', 'Şifre', 'required|min_len,8');
// Password Confirm alanı boş bırakılamaz, en az 8 karakter olmalı ve Password alanına girilen veri ile eşleşmelidir.
Validation::rule('password_confirm', 'Şifre (Tekrar)', 'required|min_len,8|matches,password');

// Birden fazla kural tanımlama
Validation::rule('field', 'label', 'required|email'); // Veri boş olamaz ve geçerli bir e-posta adresi olmalıdır.
Validation::rule('field', 'label', 'alpha_num|min_len,3|max_len,8'); // Veri alphanumeric karakterler içerebilir ve minimum 3, maksimum 8 karakterden oluşlabilir.