Zum Inhalt springen

mailformplus 4.0.5 max. Zeichen in Textfeld

Erstellt am 17. März 2008 · 4 Antworten · letzte Antwort am 18. März 2010

Tags: Frage

alexliebe ·

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:

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

In meinem Setup:

# 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
  }
        
}

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

alexliebe ·

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:

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

nun habe ich versucht eine eigene Funktion zu schreiben - funkt jedoch nicht #angry#

								case "maxtext":
									if (textarea.value.length > 5) {
										$errorFound = 1;
									}
								break;

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

Unbekannter Benutzer ·

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

Da seh ich spontan 2 Möglichkeiten:

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

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.

plugin.tx_thmailformplus_pi1.fieldConf {
  text {
    errorCheck = required
    postProcessing = USER
    postProcessing.userFunc = user_my_class->user_my_func
  }
}
class user_my_class {
  function user_my_func($content="",$conf=array()) {
    $text = t3lib_div::_GP('text');
    $text = substr($text,0,2000);
    return $text;
  }
}

lg,
Reinhard

alexliebe ·

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 ·

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:

plugin.tx_thmailformplus_pi1.fieldConf.text.errorCheck = notlonger:2000

Viele Grüße
porki