Beautiful interfaces& solid&smart backends make todays web work.

About Maik Vlcek Follow me on twitter
Themenschwerpunkte dieses Blogs:

Mailformplus 4.0 – Die flexible Typo3 Mailformular Extension geht mit mir in die vierte Runde

Share and Enjoy: Diese Icons verlinken auf Bookmark Dienste bei denen Nutzer neue Inhalte finden und mit anderen teilen können.
  • MisterWong
  • Digg

Seit kurzem ist die Version 4.0 der feinen Formularextension Mailformplus nun mit userValidation im Repository zu finden.

Sie hat Einiges zu bieten: neben der Darstellung mit eigenem HTML-Template, welches ein eigenes CSS nachladen kann, ist es per Typoscript möglich, die Felder validieren zu lassen (dazu gibts dann natürlich auch die passende Fehlerausgabe). Das Formular kann sich außerdem auf mehrere Seiten erstrecken (multipage) und bietet zudem noch Captcha Support.

An der neuen Version haben anscheinden ne Menge Leute daran gearbeitet und dem Autor der Extension hilfreich zur Seite gestanden. Neben Mehrsprachigkeit, Spamschutz und einigen Bugfixes gibt es nun auch die Möglichkeit, die Felder / Eingabedaten mit einer eigenen Funktion zu überprüfen (siehe Hook for custom validation auf der Dokuseite ), welche ich dieser sehr guten und flexiblen Extension gerne beisteuerte.

Diese Funktionalität hatte mir persönlich noch gefehlt, da in der vorherigen Version nur auf ein paar vordefinierte Validierungsfunktionen zurückgegriffen werden konnte. Zudem bietet das Validieren mit dieser Methode die Möglichkeit, detailliertere und besser beschreibende Fehlermeldungen auszugeben. Weiterhin kann man damit auch Checkboxen und Radiobuttons prüfen.

In 3 Schritten zur eigenen Überprüfung der Daten / Validierung:

1) eigene Validierungsfunktion konfigurieren

Um den Hook zu nutzen, muss in der TS-Konfiguration von Mailformplus die

plugin.tx_thmailformplus_pi1.errorUserFunc = EXT:myext/class.user_myvalidation.php:user_myvalidation->user_validate

gesetzt sein. Im obigen Beispiel wird eine Instanz der Klasse user_myvalidation (File: class.user_myvalidation.php aus dem Extensionverzeichnis myext) erstellt und deren Methode user_validate aufgerufen.

2) die Eingabefelder für die eigene Validierung konfigurieren

plugin.tx_thmailformplus_pi1.fieldConf.[name of inputfield].errorCheck = userValidation
plugin.tx_thmailformplus_pi1.fieldConf.[name of inputfield].errorCheck{
 checkFor = telephone
 param2 = ger
}

Der Parameter checkFor ist hier nur beispielhaft angegeben; man kann ihn in der eigenen Validierungsmethode per $params['checkFor'] aufrufen, um z.B. über eine switch-case Anweisung auf die verschiedenen Validierungen einzugehen (in diesem Beispiel nimmt die Variable den Wert “telephone” an).
Es können beliebige weitere Parameter angegeben werden, welche ebenfalls über $params[NAME_DES_PARAMETERS] ansprechbar sind.
Der zu überprüfende Wert des Inputfeldes ist über die Variable $params['value'] erreichbar.

3) Die Validierungsfunktion schreiben

class.user_myvalidation.php
class user_myvalidation {
function user_validate(&$params, &$ref){
  $input = $params['value'];
  switch($params['checkFor']){
    case "telephone":
        /* option 1 */
        $error = preg_match("/[+]?([0-9]+[s]?)+/",$input);

       /* extended version with custom error messages */
       if(strlen($input) < 1){
          $error = array("errorFound"=>1,"errorText"=>'Please fill out this field');
       }
       else{
          $errorFound = preg_match("/[+]?([0-9]+[s]?)+/",$input);
          $error = array("errorFound"=>$errorFound,"errorText"=>'Please enter a valid telephone number');
       }
       break;
  case "email": ...    

  }
return $error;
}
}

Wie man in dem Beispiel gezeigt, kann die Übergabe eines gefundenen Fehlers auf zwei Wegen geschehen:

a) als boolean – ein Fehler wurde (nicht) gefunden
b) als array (“errorFound”=>boolean, “errorText”=>eigene Fehlernachricht, welche TS Einstellungen überschreibt”);

Mit der zweiten Variante hat man die Möglichkeit die Usability deutlich zu verbessern, da treffende Fehlermeldungen definiert werden können.

Publiziert am 22. Mai. 2007 von mediavrog in , , , , , , , , . Kategorie: EXT.

Share and Enjoy: Diese Icons verlinken auf Bookmark Dienste bei denen Nutzer neue Inhalte finden und mit anderen teilen können.
  • Y!GG
  • MisterWong
  • Linkarena
  • Facebook
  • TwitThis
  • email
  • del.icio.us
  • Digg
  • StumbleUpon
  • Technorati
Monster-Me eating knowledge
4 Responses RSS Icon
Trackback URL
  1. Andreas sagt:

    Hallo,

    was macht der “_” hinter plugin.tx_thmailformplus_pi1 bei Definition der UDF? Ohne den funktioniert das Ganze nämlich wunderbar ;-)

  2. mediavrog sagt:

    Danke für den Tipp – habs geändert :)

  3. Maik sagt:

    Hallo,

    erstmal vielen Dank für deine “Erweiterung der Erweiterung” :-).
    Eine Frage habe ich aber noch: Kommt man irgendwie an ein weiteres “inputfield” aus dem zu überprüfenden Formular heran, z.B.: wenn man zwei Felder (Email-Addresse, Bestätigung der Email-Addresse) vergleichen möchte.

  4. mediavrog sagt:

    Du kannst zum Beispiel den Wert des E-Mail-Feldes in der Session speichern und beim Prüfen des “E-Mail wiederholen”-Feldes vergleichen..

Einen Kommentar hinterlassen

Du kannst die folgenden Schlagwörter verwenden: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>

top top