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.
- Doğrulama Kuralı Tanımlama » rule(), rules()
- Doğrulama Verisi Tanımlama » data(), bulkData()
- Request Fonksiyonu ile Doğrulama Verisi Tanımlama
- Doğrulama İşlemini Gerçekleştirme » isValid()
- Doğrulama Hatalarına Erişme » errors()
- 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ğrulama 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);
Request Fonksiyonu ile Doğrulama Verisi Tanımlama
Tanımlanan doğrulama kurallarına tabi tutulacak veriler request() methodu ile doğrudan rules() methoduna verilebilir.
ÖNEMLİ: request() fonksiyonundan gelen form elemanının ismi, doğrulama kuralı tanımlarken belirlenen anahtar ile aynı olmalı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, request());
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.