validatoren

Hier finden sich Fragen und Ergänzung zur Dokumentation. // All questions and discussions about the documentation.
Antworten
Screeze
Beiträge: 1920
Registriert: 05.08.2009, 09:49:04
Kontaktdaten:

validatoren

Beitrag von Screeze » 09.08.2009, 13:07:26

Welche möglichkeiten bestehen denn eigene validatoren zu erstellen? irgendwie hab ich dazu nichts gefunden...
die validatorklasse zu bearbeiten is ne unschöne methode :roll:

Benutzeravatar
dr.e.
Administrator
Beiträge: 4606
Registriert: 04.11.2007, 16:13:53

Re: validatoren

Beitrag von dr.e. » 09.08.2009, 21:41:56

Hallo Screeze,

im Moment ist es leider nicht anders möglich als die Klasse myValidator zu bearbeiten - sofern du die "Standard"-Validatoren nutzen möchtest. Alternativ dazu bietet sich der Tag <form:genericval /> an (siehe http://adventure-php-framework.org/Seit ... -Validator). Mit diesem kannst du nach beliebigen regulären Ausdrücken validieren.

Es wird dich jedoch sicher freuen, dass im Release 1.11 die Formular-Taglibs dahingehend nochmals überarbeitet werden. Zukünftig wird es dann möglich sein, per

Code: Alles auswählen

<form:sptext name="name" style="width: 400px;" />
<form:addvalidator
   control="sptext"
   namespace="tools::form::taglib"
   class="CharacterValidator"
   button="testform"
/>
<form:addfilter
  control="sptext"
  namespace="tools::form::taglib"
  class="SpecialCharacterFilter"
  button="testform"
/>
auf generische Art und Weise (eigene) Validatoren und Filter an ein Feld zu hängen. Sobald dazu eine testbare Implementierung existiert, werde ich im Forum Neue Features einen neuen Thread eröffnen.

Solltest du in der Zwischenzeit neue Validatoren benötigen, integriere ich diese auch gerne in die myValidator-Klasse, damit du bei einem Update keine Fehler in deinen Applikationen bekommst. Schick mir dann einfach den Code oder poste ihn hier.

Viele Grüße,
Christian
Viele Grüße,
Christian

Screeze
Beiträge: 1920
Registriert: 05.08.2009, 09:49:04
Kontaktdaten:

Re: validatoren

Beitrag von Screeze » 10.08.2009, 14:11:21

Wäre nett von dir, wenn du folgenden validator integrieren könntest, habe ihn bei mir schon drinnen:

Code: Alles auswählen

/**
      *  @public
      *  @static
      *
      *  Validates an burthday
      *
      *  @param string $String; Burthday String. Format: dd.mm.yyyy
      *  @return true|false
      *
      *  @author Ralf Schubert
      *  @version
      *  Version 0.1, 10.08.2009<br />
      */
      static function validateBurthday($String){
         $burthday = explode('.', trim($String));
         
         // catch invalid strings
         if(count($burthday) !== 3)
            return false;

         // change order and check date
         return checkdate((int) $burthday['1'], (int) $burthday['0'], (int) $burthday['2']);

       // end function
      }
Sollte selbsterklärend sein ;)
Format: "tag.monat.jahr"

-----------------

Ein validator, um 2 Felder zu vergleichen gibts nicht oder? (passwortfeld vergleich)

Benutzeravatar
dr.e.
Administrator
Beiträge: 4606
Registriert: 04.11.2007, 16:13:53

Re: validatoren

Beitrag von dr.e. » 10.08.2009, 22:26:59

Hallo Screeze,

könnte man die gepostete Methode nicht auch durch

Code: Alles auswählen

static function validateBirthday($string){   
   if(preg_match('/([0-9]{2})\.([0-9]{2)\.([0-9]{4})/',$string)){
      return true;
   }
   return false;
}
abbilden? Ich finde die Zerlegung der String unnötig...

BTW: ich habe mal "burthday" nach "birthday" umbenannt. ;-)


Viele Grüße,
Christian
Viele Grüße,
Christian

Screeze
Beiträge: 1920
Registriert: 05.08.2009, 09:49:04
Kontaktdaten:

Re: validatoren

Beitrag von Screeze » 10.08.2009, 22:41:16

*arrg* burthday, wie komm ich nur da drauf..

Was regex angeht: reguläre ausdrücke sind extreme perfomancekiller, wos geht vermeid ich die. außerdem wird mit der checkdate methode gleich geprüft ob das datum überhaupt existiert.

Benutzeravatar
dr.e.
Administrator
Beiträge: 4606
Registriert: 04.11.2007, 16:13:53

Re: validatoren

Beitrag von dr.e. » 10.08.2009, 23:08:44

Hi,

ok. Ich habe nun folgenden Code in das Release integriert:

Code: Alles auswählen

      /**
       * @public
       * @static
       *
       * Validates an birthday date.
       *
       * @param string $string; Birthday date. Expected format is: dd.mm.yyyy
       * @return boolean true|false
       *
       * @author Ralf Schubert
       * @version
       * Version 0.1, 10.08.2009<br />
       */
      static function validateBirthday($string){
         
         $birthday = explode('.', trim($string));

         // catch invalid strings
         if(count($birthday) !== 3) {
            return false;
          // end if
         }
         
         // change order and check date
         return checkdate((int) $birthday['1'], (int) $birthday['0'], (int) $birthday['2']);

       // end function
      }
Die aktualisierte Version kannst du via SVN beziehen, im Release 1.10-stable wird diese dann direkt enthalten sein. :)

Viele Grüße,
Christian
Viele Grüße,
Christian


Antworten