CodeigniterGenel

form_validation sınıfının kullanımı

By 13 Mayıs 2017 One Comment

Yazılım dünyasının en tatlı kedisi kablosuzkedi’ nin yeni yazısından herkese merhabalar 🙂

Bu yazımızda codeigniter ile form_validation sınıfının kullanımını göreceğiz. Peki nedir bu form_validation diyebilirsiniz. Hani kullanıcıdan bir bilgi almaya çalışırken genelde kontrol ederiz;

  • acaba boşluk girdi mi?
  • herhangi bir alanı doldurmamazlık yaptı mı?
  • bu kullanıcı adıyla ilgili daha önceden bir kullanıcı kaydı var mı?
  • şifreler uyuşuyor mu?
  • geçerli bir mail adresi girdi mi?

işte bunun gibi daha birçok kontrolü biz kendimiz manuel olarak yapıyoruz. İşte form_validation sınıfı bunu kendisi yapıyor. Bunu yapmak oldukça kolay ve basit. Bu videoda onu anlattım işte.

ilk olarak elbette form_validation sınıfını yüklüyoruz;

$load->library("form_validation");

Kural oluşturmak için ise set_rules isimli metodu kullanıyoruz. Mesela full_name diye bir veriyi form aracılığı ile post ettiğimizi düşünelim; Bu alanın kesinlikle girilmesini istiyoruz ve boşluklarının temizlenmesini istiyoruz;

$this->form_validation->set_rules("full_name","Ad Soyad","required|trim");

bu metot içerisine zarurî olarak 3 tane parametre alır.

  1. ilk parametre, post edilen veriyi temsil eder.
  2. ikinci parametre, description yani bu alanın ne olduğunu bize söyleyen ve hata mesajı gösterirken kullanılacak olan parametredir.
  3. üçüncü parametre, bu alan için kullanılacak olan kurallar.

bu yukarıdaki kuralda full_name alanı için kesinlikle girilmeli ve boşluklarını temizle diyoruz.

elbette birçok kural tanımı yapabiliriz bunun listesini de sizinle paylaşayım.

Rule Parameter Description Example
required No Returns FALSE if the form element is empty.
matches Yes Returns FALSE if the form element does not match the one in the parameter. matches[form_item]
regex_match Yes Returns FALSE if the form element does not match the regular expression. regex_match[/regex/]
differs Yes Returns FALSE if the form element does not differ from the one in the parameter. differs[form_item]
is_unique Yes Returns FALSE if the form element is not unique to the table and field name in the parameter. Note: This rule requires Query Builder to be enabled in order to work. is_unique[table.field]
min_length Yes Returns FALSE if the form element is shorter than the parameter value. min_length[3]
max_length Yes Returns FALSE if the form element is longer than the parameter value. max_length[12]
exact_length Yes Returns FALSE if the form element is not exactly the parameter value. exact_length[8]
greater_than Yes Returns FALSE if the form element is less than or equal to the parameter value or not numeric. greater_than[8]
greater_than_equal_to Yes Returns FALSE if the form element is less than the parameter value, or not numeric. greater_than_equal_to[8]
less_than Yes Returns FALSE if the form element is greater than or equal to the parameter value or not numeric. less_than[8]
less_than_equal_to Yes Returns FALSE if the form element is greater than the parameter value, or not numeric. less_than_equal_to[8]
in_list Yes Returns FALSE if the form element is not within a predetermined list. in_list[red,blue,green]
alpha No Returns FALSE if the form element contains anything other than alphabetical characters.
alpha_numeric No Returns FALSE if the form element contains anything other than alpha-numeric characters.
alpha_numeric_spaces No Returns FALSE if the form element contains anything other than alpha-numeric characters or spaces. Should be used after trim to avoid spaces at the beginning or end.
alpha_dash No Returns FALSE if the form element contains anything other than alpha-numeric characters, underscores or dashes.
numeric No Returns FALSE if the form element contains anything other than numeric characters.
integer No Returns FALSE if the form element contains anything other than an integer.
decimal No Returns FALSE if the form element contains anything other than a decimal number.
is_natural No Returns FALSE if the form element contains anything other than a natural number: 0, 1, 2, 3, etc.
is_natural_no_zero No Returns FALSE if the form element contains anything other than a natural number, but not zero: 1, 2, 3, etc.
valid_url No Returns FALSE if the form element does not contain a valid URL.
valid_email No Returns FALSE if the form element does not contain a valid email address.
valid_emails No Returns FALSE if any value provided in a comma separated list is not a valid email.
valid_ip Yes Returns FALSE if the supplied IP address is not valid. Accepts an optional parameter of ‘ipv4’ or ‘ipv6’ to specify an IP format.
valid_base64 No Returns FALSE if the supplied string contains anything other than valid Base64 characters.

şimdi ikinci bir alanımız için kural yazalım. Bu alanımız da email olsun. Bu alan için kesinlikle girilmeli, geçerli bir email adresi olmalı ve daha önce bu email adresiyle veritabanında böyle bir kayıt olmamalıdır.

$this->form_validation->set_rules("email", "E-posta", "required|trim|valid_email|is_unique[member.email]");

Not: Bu işlemi yapmadan önce codeigniter’ ı veritabanına bağlayıp(database.php) daha sonra da autoload.php dosyası içerisinde library array’i içerisinde database indisini tanımlamalısınız. Son olarak da member isimli bir tablo oluşturup, bu tablo içerisinde email isimli bir alan oluşturmanız gerekmektedir.

Bu kural ne yapıyor şimdi burayı açıklayalım;

  • email alanı kesinlikle girilmiş olmalıdır
  • boşlukları sağdan soldan temizlenir
  • geçerli bir mail adresi girilmiş olmalıdır
  • ve benim için en güzel özellik olan bu mail adresine ait member tablosunda daha önce bir kayıt var mı yok mu diye bakar

gördüğünüz gibi oldukça kolay kural oluşturabiliyoruz.

Şimdi bu kuralları nasıl çalıştırırız ona bakalım;

$this->form_validation->run()

yani form_validation sınıfının run() isimli metodunu kullanıyoruz. Bu metot bize boolean bir sonuç geri döndürüyor. Yani işlem başarılı ya da başarısız. Eğer bizim yazdığımız kurallara uymayan bir durum söz konusu ise FALSE dönecektir. Biz de bunu kontrol ederek kardeşim dur senin bunlar bunları yapman gerekiyor diyebiliyoruz.

if($this->form_validation->run() == FALSE){
echo validation_errors();
}

validation_errors(); fonksiyonu da bize form_validation ile oluşan hata mesajlarını vermektedir. Böylece hatayı ekrana bastırabiliyoruz.

Hata mesajları varsayılan olarak ingilizce fakat biz bunları da değiştirebiliyoruz tabiki. Fakat bunları ve daha fazlasını öğrenmek için videoya bir gözatın derim 🙂

kaynak kodları indirmek için ise github hesabımı inceleyebilirsiniz

daha fazla detayı codeigniter resmî sitesinden elde edebilirsiniz.

Bu yazılık bu kadar kendinize iyi bakın kodlamayı asla unutmayın 🙂

admin

admin

Müzik ve Yazılım ruhuna işlemiş eğlenceli biriyimdir :) Yaklaşık 14 yıldan beri yazılımın içinde bulunmaktayım. Bu yazılım denen dünyanın en eğlenceli mesleğinden teknolojileriyle ilgili bildiklerimi ülkemin güzel insanlarına bir nebze olsun aktarabilmek için çabalayan biriyim :) Nargile sever, kedilere ve adrenaline bayılırım.

One Comment

  • Hello there! This post couldn’t be written any better!

    Reading through this post reminds me of my previous room
    mate! He always kept talking about this. I will forward this article to him.
    Pretty sure he will have a good read. Thank you for sharing!

Leave a Reply