mailformplus 4.0.5 max. Zeichen in Textfeld [Gelöst]

  • alexliebe alexliebe
    R2-D2
    0 x
    114 Beiträge
    0 Hilfreiche Beiträge
    17. 03. 2008, 20:39

    hi profs,

    ich bin seit heut Morgen am Verzweifeln.
    Soll ein Formular mit mailformplus erstellen und darin ein Textfeld mit maximal 2000 Zeichen.

    Im Manual steht:

    [TS]New since version 4.0.1:
    - min ... check if an array has at least [min]items
    - max ... check if an array hast at least [max]items
    example:
    checkboxArray {
    errorCheck = required,min:2,max:4
    }
    You can specify multiple errorchecks by separating them by ","
    example:
    .errorCheck = required, email
    [/TS]

    In meinem Setup:

    [TS]# errorChecks for the form fields
    plugin.tx_thmailformplus_pi1.fieldConf {
    name {
    errorCheck = required
    }
    surname {
    errorCheck = required
    }
    affiliation{
    errorCheck = required
    }
    email {
    errorCheck = required,email
    }
    text {
    errorCheck = required,min:2,max:4
    }

    }[/TS]

    Resultat: Es geht nicht auf diesen errorcheck ein - sprich es ist dem script egal ob ich 1 Zeichen oder 37.000 eingebe.

    Was mich verwirrt ist, dass ich in keiner Datei der Extension irgendeinen Hinweis auf "min" oder "max" gefuden habe - das ist ein Wiederspruch zum Manual.

    Hat irgendjemand eine Idee oder dieses Problem schon mal gehabt oder gar gelöst? #angry#

    Gruß, Alex


  • 1
  • alexliebe alexliebe
    R2-D2
    0 x
    114 Beiträge
    0 Hilfreiche Beiträge
    18. 03. 2008, 08:32

    ok - ich komme der Sache schon näher.

    Die Funktion bezieht sich nur auf checkboxen und nicht auf textarea!

    in der class.tx_thmailformplus_pi1.php habe ich folegndes gefunden:

    [TS]case "min":
    if(is_array($this->get_post[$fieldname])) {
    if(count($this->get_post[$fieldname]) < $parameter) {
    $errorFound = 1;
    }
    }
    break;[/TS]

    nun habe ich versucht eine eigene Funktion zu schreiben - funkt jedoch nicht #angry# [TS]case "maxtext":
    if (textarea.value.length > 5) {
    $errorFound = 1;
    }
    break;[/TS]

    in diesem Fall müsste doch eine Fehlermeldung kommen - oder?


  • 0 x
    18. 03. 2008, 11:09

    Was du machen willst, ist checken, ob ein Text länger als 2000 Zeichen ist.

    Da seh ich spontan 2 Möglichkeiten:

    [TS]plugin.tx_thmailformplus_pi1.fieldConf {
    text {
    errorCheck = required
    errorCheck.ereg = ^.{1,2000}$
    }
    }
    [/TS]

    Diese Regular Expression sollte überprüfen, ob ein beliebiges Zeichen 1-2000 Mal vorkommt, also ob der Text zwischen 1 und 2000 Zeichen lang ist.

    Möglichkeit 2:

    Du sparst dir die Fehlermeldung und kürzt den Text vor dem Insert in die Datenbank auf 2000 Zeichen mit einer userFunc.

    [TS]plugin.tx_thmailformplus_pi1.fieldConf {
    text {
    errorCheck = required
    postProcessing = USER
    postProcessing.userFunc = user_my_class->user_my_func
    }
    }
    [/TS]

    1. class user_my_class {
    2. function user_my_func($content="",$conf=array()) {
    3. $text = t3lib_div::_GP('text');
    4. $text = substr($text,0,2000);
    5. return $text;
    6. }
    7. }

    lg,
    Reinhard

  • alexliebe alexliebe
    R2-D2
    0 x
    114 Beiträge
    0 Hilfreiche Beiträge
    18. 03. 2008, 11:15

    Hallo Reinhard,

    VIELEN, VIELEN Dank. Ich halte es nicht aus!!! Ich habe schon soviel mit ereg herumgebastelt. Aber einfach nur ein Punkt vor der Klammer ...

    Betsen Dank - ich sitze an dem schon gut 16 Stunden.

    Liebe Grüsse, Alex

  • porki porki
    T3PO
    0 x
    27 Beiträge
    0 Hilfreiche Beiträge
    18. 03. 2010, 15:19

    Auch, wenn ich jetzt als Threadschänder abgestempelt werde...
    Ich hatte das selbe Problem und bin beim Sichten des Extensionquelltexts auf einen Parameter gestoßen, der im Changelog von 4.0.13 zwar erwähnt, aber bisher in die Doku nicht aufgenommen wurde:

    New error check “notlonger” checking if a string input is not longer than given amount of characters. Thanks to Lars Jochimsen <jochimsen(at)net4media.de> for the hint and the code.

    Tut das Selbe wie die Regex bzw. die Userfunction-Ansätze:
    [TS]plugin.tx_thmailformplus_pi1.fieldConf.text.errorCheck = notlonger:2000[/TS]

    Viele Grüße
    porki

  • 1