formDogrula

php ile yazılmış form doğrulama sınıfı

4. hata mesajları ve hata mesajlarını değiştirme

Bir form elemanından gelen değer, tanımlamış olduğumuz bir kuraldan geçemez ise bu durumu kullanıcıya bildirmek için hata mesajlarından yararlanırız. Kural içerisine yazılmış olan ve formdan gelen değeri doğrulama için kullanılan her fonksiyona özel bir hata mesajı tanımlanmış olmalıdır.

a) Varsayılan hata mesajlarını değiştirmek

Örneğin "Müzik dosyası" etiketine sahip bir form elemanımız olsun. Bunu doğrulamak için ile_biter isimli doğrulama fonksiyonunu kullanalım. Formdan gelen değer .mp3 ifadesi ile bitmek zorunda olsun. Bu değer doğrulamadan geçemezse Müzik dosyası ".mp3" ile bitmeli hata mesajı verir.

$fdo->kural('muzik', 'Müzik dosyası', 'ile_biter[.mp3]');

Bu hata mesajını değiştirmek için hataEkle metodunu kullanmalıyız. Bu metodu, kuralı yazdığınız satırdan sonra kullanmalısınız.

$fdo->kural('muzik', 'Müzik dosyası', 'ile_biter[.mp3]');

$fdo->hataEkle('fdo_ile_biter', '%E alanı "#1" ifadesi ile sona erecek');

ile_biter fonksiyonu bir eklenti fonksiyonu olduğundan başına fdo_ ifadesi ekledik. Bu fonksiyon bir kullanıcı (kul) fonksiyonu olsaydı başına kul_ ifadesi ekleyecektik.

b) Hata mesajlarında kullanılan "belirteçler"

Üstteki örnekte de görüldüğü gibi hata mesajları içerisinde %E ve #1 gibi ifadeler kullandık. Bunlar belirteç olarak adlandırılırlar. % ile başlayanlar geçerli form elemanına ait Ad, Etiket veya Değer bilgisini belirtirler. # ile başlayanlar ise doğrulama fonksiyonu içerisindeki parametreleri belirtirler.

  • %A veya %F: geçerli form elemanının adı
  • %E veya %L: geçerli etiket değeri
  • %D veya %V: form elemanından gelen değer
  • #1: doğrulama fonksiyonundaki 1. parametre
  • #2: doğrulama fonksiyonundaki 2. parametre
  • ....
  • #?: doğrulama fonksiyonundaki bütün parametreler

c) Çoklu hata mesajları eklemek

Bazı durumlarda birden fazla parametre alabilen doğrulama fonksiyonları kullanmak gerekir. Örneğin ile_biter fonksiyonuna parametre olarak .mp3, .ogg, .wav, .acc ifadelerini yazalım. Böyle bir durumda,

$fdo->hataEkle(
    'fdo_ile_biter',
    '%E alanı "#1, #2, #3, #4" ifadelerinden birisiyle sona ermeli'
);

şeklinde bir hata mesajı eklemek yerine

$fdo->hataEkle(
    'fdo_ile_biter',
    '%E alanı "#?" ifadelerinden birisiyle sona ermeli',
    true
);

şeklinde bir kullanım daha pratik olacaktır. Parametreleri belirtmek için #? parametresi kullandığımıza ve hataEkle() metodunun sonuna true bilgisi eklediğimize dikkat edin !