By Hüseyin Bora
Doğrulayıcı(Validator) sınıfları durağan(static) metotları kullanan sınıflardır. işlerinizi kolaylaştırması ve yazılımın bütünleşik parçalar halinde kolektif bir yapıda çalışmasına olanak sağlar.
Bir doğrulama metodunun tanımlaması aşağıdaki gibidir
static function required(Component $c,Component $m,$message,$success)
Birinci parametre “Component $c” doğrulama işleminin yapıldığı bileşen
İkinci parametre “Component $m” mesajların yazdırılacağı bileşen
Üçüncü parametre uyarı mesajı
Dördüncü parametre doğrulama mesajı
Örneğin yeni üye kaydı için bir üye kayıt formumuzun olduğunu ve aynı ismi taşıyabilecek sadece bir üye olduğunu düşünelim.
Bunun için Uyekontrol adında bir sınıf oluşturup varmi ismini taşıyan bir doğrulama metodu ekliyorum
class uyekontrol
{
static function varmi(Component $c,Component $m,$message,$success)
{
$sorgu = EntityManager::getInstance()->createQuery("select u from uyeler u where uye.adi =:uyead");
$sorgu->bindParam("uyeadi", $c->getText);
$sorgu->execute();
$sonuc =$sorgu->getSingle();
if($sonuc!=null){
$m->setText($message);
return >true;
}
$m->setText($success);
return >true;
}
}
Şimdi oluşturduğumuz doğrulama sınıfını view (görünüm) içerisinde kullanalım
<faces>
<@import prefix="f" taglib="phpf.ui.*"/>
<f:form method="post" name="uyeform">
Uye adi :<f:textbox
name="uyeadi"
validator="uyekontrol"
rule="varmi"
success="Uye adi doğrulandı "
message=" Daha önce bu isimde bir üye kayıt olmuş farklı bir isim deneyin! "
messagefor="msgbox"
/>
<f:message id="msgbox"/>
<f:button name="kaydet" text="Gönder" onclick="actionevent" forname="uyeform"/>
</f:form>
</faces>
Validador sınıfımızı controller içerisinde import ediyoruz
import("phpf.controllers.facete");
import("dbf.persistence");
import("dogrulayicilar.uyekontrol",true);
class Controller extends Facete{
function Controller(){
parent::Facete();
$this->render("uyekayit.phpf");
}
function kaydetClicked($evt){
$uye = new uye();
$uye->adi = $this->uyeadi->text;
$uye->save();
}
}
By Hüseyin Bora
Çoklu doğrulamalar bir bileşene birden çok doğrulama yapmak istediğiniz zaman kullanışlıdır çoklu doğrulamalarda nitelik değerleri “,” virgül ile bir birlerinden ayrılmalıdır.
Örneğin required ve mail doğrulamalarının birlikte planlanması.
<f:textbox name="email"
validator="validator"
rule="mail,required"
message="*Hatali mail adresi,* Bu alan boş geçilemez"
success="Adres doğrulandı,"
messagefor="msg1,msg2"/>
<f:message id="msg1"/>
<f:message id="msg2"/>
Bu örnekte önce mail doğrulaması daha sonra required doğrulaması yapılır. her iki doğrulama sonucu yanlış olursa her iki mesajda işletilir.
mail doğrulamasının mesajı “msg1″ required doğrulamasının mesajı “msg2″ bileşenlerine yazdırılır.
e-mail adresinin doğrulanması durumunda “Adres doğrulandı” mesajı msg1 bileşeninde yazdırılır.
By Hüseyin Bora
Validator sınıfının metotları aşağıdaki gibidir.
- required
- equals
- minLength
- maxLength
- mail
- alpha
- alpha_numeric
- numeric
- integer
- betweenLength
- between
- boolean
- test
required post edilen bileşinin içeriğinin boş olup olmadığını kontrol eder
Örnek
isim :<f:textbox
name="textbox"
validator=" validator"
rule="required"
message="Bu alan boş geçilemez"
messagefor="msgbox"/>
<f:message name="msgbox"/>
equals post edilen bileşenin içeriğinin test niteliği ile uyuşup uyuşmadığını kontrol eder
Örnek
isim :<f:textbox
name="textbox"
validator="validator"
rule="equals"
test="200"
message="Hata girilen değer 200 değil "
messagefor="msgbox"
"/>
<f:message name="msgbox"/>
minLength post edilen bileşenin içeriğinin karakter uzunluğunun min niteliğinden büyük olup olmadığını kontrol eder
Örnek
isim :<f:textbox
name="textbox"
validator="validator"
rule="minlength"
min="10"
message="En fazla 10 karakter "
messagefor="msgbox"
"/>
<f:message name="msgbox"/>
maxLength post edilen bileşenin içeriğinin karakter uzunluğunun max niteliğinden küçük olup olmadığını kontrol eder
Örnek
isim :<f:textbox
name="textbox"
validator="validator"
rule="maxlength"
min=“5”
message="En az beş karakter girilmelisiniz !"
messagefor="msgbox"
"/>
<f:message name="msgbox"/>
Mail post edilen bileşenin içeriğinin bir mail adresi olup olmadığını kontrol eder
Örnek
isim :<f:textbox
name="textbox"
validator="validator"
rule="mail"
message="Bu bir mail adresi değil !"
messagefor="msgbox"
"/>
<f:message name="msgbox"/>
Alpha post edilen bileşenin içeriğinin bir sözel (string) olup olmadığını kontrol eder.
Örnek
isim :<f:textbox
name="textbox"
validator="validator"
rule="alpha"
message="Girilen değer sözel değil !"
messagefor="msgbox"
"/>
<f:message name="msgbox"/>
alpha_numeric post edilen bileşenin içeriğinin bir karakterlerden ve sayılardan oluşup oluşmadığını olmadığını kontrol eder.
Örnek
isim :<f:textbox
name="textbox"
validator="validator"
rule="alpha_numeric"
message="Girilen değer sayı içermeli !"
messagefor="msgbox"
"/>
<f:message name="msgbox"/>
Numeric post edilen bileşenin içeriğinin bir sayısal değer olup olmadığını kontrol eder.
Örnek
isim :<f:textbox
name="textbox"
validator="validator"
rule="numeric"
message="Uyarı girdiğiniz değer bir sayı değil !"
messagefor="msgbox"
"/>
<f:message name="msgbox"/>
integer post edilen bileşenin içeriğinin bir tam sayı olup olmadığını kontrol eder.
Örnek
isim :<f:textbox
name="textbox"
validator="validator"
rule="integer"
message="Uyarı girdiğiniz değer bir tam sayı değil !"
messagefor="msgbox"
"/>
<f:message name="msgbox"/>
betweenLength post edilen bileşenin içeriğinin uzunluğunun min ve max değerleri arasında olup olmadığını kontrol eder.
Örnek
isim :<f:textbox
name="textbox"
validator="validator"
rule="betweenLength"
min="5"
max="20"
message="Beş karakterden az Yirmi karakterden uzun veri girmeyiniz! "
messagefor="msgbox"
"/>
<f:message name="msgbox"/>
Between post edilen bileşenin içeriğinin min ve max değerleri arasında olup olmadığını kontrol eder.
Örnek
isim :<f:textbox
name="textbox"
validator="validator"
rule="between"
min="0"
max="100"
message="Girilen sayı 0 ile 100 arasında değil ! "
messagefor="msgbox"
"/>
<f:message name="msgbox"/>
Boolean post edilen bileşenin içeriğinin mantıksal(boolean) değer olup olmadığını kontrol eder.
Örnek
isim :<f:textbox
name="textbox"
validator="validator"
rule="Boolean"
message="Girilen değer mantıksal değil "
messagefor="msgbox"
"/>
<f:message name="msgbox"/>
Test post edilen bileşenin içeriğinin bileşenin test niteliğindeki mantıksal ifadenin uyuşup uyuşmadığını kontrol eder.
Örnek
isim :<f:textbox
name="textbox"
validator="validator"
rule="test"
test="this.text >0 && this.text >100 "
message=" Girilen sayı 0 ile 100 arasında değil ! "
messagefor="msgbox"
“/>
<f:message name="msgbox"/>