Form Validation kütüphanesi

Form Validation kütüphanesi

CodeIgniter’da belkide en çok sevilen kütüphaneler’den birisi Form Validation Kütüphanesidir, Form Validation kısaca form denetleme sistemi diyebiliriz, daha açıklayıcı bir örnek vermek gerekirse, bir üyelik formunuz var  ve üye adının en az 5 karakter olmasını istiyoruz bunu CodeIgniter olmadan JS veya Ajax ile sağlardık fakat CodeIgniter’da Form Validation Class’ında 1 satır kod ile bu denetimi sağlayabiliyoruz.

Örneğimize ufak bir form ile başlayalım.


<html>
<head>
<title>Form Validation Kütüphanesi</title>
</head>
<body>

<?php echo validation_errors(); ?>

<?php echo form_open('form'); ?>

<h5>Kullanıcı Adı</h5>
<input type="text" name="kAdi" value="" size="50" />

<h5>Şifre</h5>
<input type="text" name="sifre" value="" size="50" />

<h5>Şifre Doğrulama</h5>
<input type="text" name="sifred" value="" size="50" />

<h5>Email Adres</h5>
<input type="text" name="email" value="" size="50" />

<div><input type="submit" value="Gönder" /></div>

</form>

</body>
</html>

Bu ufak kayıt formunda ekstra olarak birde form helper’ını kullanıyoruz, denetlemeyi yapmamız için form validation kurallarını belirlememiz gerekiyor. Altta kuralları array şeklinde belirlemeyi görüyorsunuz.


$config = array(
 array(
 'field' => 'kAdi',
 'label' => 'Kullanicı Adı',
 'rules' => 'trim|required|min_lenght[3]|is_unique[users.username]'
 ),
 array(
 'field' => 'sifre',
 'label' => 'Şifre',
 'rules' => 'trim|required|min_lenght[5]'
 ),
 array(
 'field' => 'sifred',
 'label' => 'Şifre Doğrulama',
 'rules' => 'trim|required|min_lenght[5]|matches[sifre]'
 ),
 array(
 'field' => 'email',
 'label' => 'E Mail',
 'rules' => 'trim|required|is_unique[users.email]|valid_email'
 )
 );

Yukarıda kurallarımızı array kullanarak belirledik sayfanın en altında tüm kuralları ve açıklamalarını bulabilirsiniz. Şimdi bu kuralları çalıştırmaya geldi.

if($this->form_validation->run() == FALSE){
 $data['errors'] = validation_errors();
 }else{
 $data = array(
 'username' => $_POST['kAdi'],
 'password' => $_POST['sifre'],
 'email' => $_POST['email']
 );
 $this->load->model('user');
$this->user->create_user($data);
 redirect (base_url().'posts/');
 }

If kontrolüyle form kurallarının yerine getirilip getirlmediğini kontrol edip tersi durumunda hata mesajı vermesini sağlayabiliyoruz, kuralları oluşturduğumuz array’in içinde label bölümü bulunuyor bu bölüm hata mesajında yazdırılacak olan isim oluyor, eğer tam olarak anlamadıysanız bir örnekle daha iyi anlayacağınızdan eminim.

Bu örneğimizde kuralı array şeklinde değilde standat formatta oluşturalım.

$this->form_validation->set_rules('sifre', 'Şifreniz', 'required');

Burda sifre post’dan gelen name ile uyuşması gereken bölüm, Şifreniz ise şifrenin boş bırakılması durumunda verilecek hata mesajında yazdırılacak bölüm, peki hata mesajları türkçe mi ? malesef değil ama CodeIgniter bize bunları türkçeleştirme imkanı sunuyor bunun iki yolu var ilki eğer sabit bir hata mesajı oluşturcaksanız bunu language/english/form_validation_lang.php bölümünden yapabilirsiniz ikinci ol ise form validation’dan hemen sonra hata mesajı belirlemek bunu direk controller dosyasında yapabiliyoruz.

Controller’da Hata Mesajlarını Türkçeleştirme


$this->form_validation->set_message('required', 'Bu alanı doldurmak zorundasınız!');

Yukarıda required yani zorunlu yapma kuralının hata mesajını belirlemiş olduk.

Hata Mesajlarına Class Eklemek

Hata mesajlarının hepsine class eklemek için

$this->form_validation->set_error_delimiters('<kbd><div></kbd>', '<kbd></div></kbd>');

Özel bir hata mesajına view’de class eklemek için

<?php echo form_error('kAdi', '<kbd><div></kbd>', '<kbd></div></kbd>'); ?>

Kodunu kullanıyoruz.

Açıklamalar

  • değer’de ki whitespace’leri siler.
  • değerin boş bıraklılmasını önler.
  • değerin veritabanı’nda olmadığını kontrol eder. is_unique[tablo.sıra]
  • değerlerin birbiriyle aynı oluşunu kontrol eder. matches[form_item]
  • değerin minumum karakter sayınını belirler. min_length[6]
  • değerin maksimum karakter sayısını belirler. max_length[18]
  • değerin sabit karakter uzunluğu kontrol eder. exact_length[10]
  • değerin yazı olup olmadığını kontrol eder.
  • değerin yazı veya sayı olup olmadığını kontrol eder.
  • değerin yazı, sayı, tire ve alt tire olup olmadığını kontrol eder.
  • değerin sayı olup olmadığını kontrol eder.
  • değerin integer değer olup olmadığını kontrol eder.
  • değerin doğal sayı olup olmadığını kontrol eder.
  • değerin doğal sayı (sıfırsız) olup olmadığını kontrol eder.
  • değerin geçek e-mail olup olmadığını kontrol eder.
  • değerlerin gerçek email olup olmadığını kontrol eder.
  • ip’nin gerçek olup olmadığını kontrol eder.

Gördüğünüz bir hata varsa veya sormak istediğiniz soru varsa yorum gönderebilirsiniz. Teşekkür ederim.