Zum Inhalt springen

Formularfelder validieren

Erstellt am 17. Juli 2014 · Noch keine Antworten

Tags: Frage

mike_72 ·

Hallo Forum,

ich habe ein kleines Kontaktformular mit folgenden Feldern:
- Firma (optional)
- Name (Pflichtfeld)
- E-Mail
- Telefon

Bei den Feldern E-Mail und Telefon soll mindestens eins ausgefüllt sein. Außerdem soll bei der E-Mail noch auf korrekte Schreibweise und beim Telefon auf Ziffern geprüft werden.

Alles einzeln funktioniert, aber ich bekomme das nicht so zusammen wie ich es gerne hätte.
Mittels Object Validator prüfe ich, ob wenigstens eines der Felder E-Mail/Telefon ausgefüllt ist. Wenn nein, gibt es die Fehlermeldung zurück. Allerdings zweimal unter email.0 und email.2. (s. Bild)

Weiss jemand warum der Fehler 2x erscheint und wie ich das umgehen kann?

Sofern beide Felder (E-Mail/Telefon) leer bleiben, muss bzw. soll mein eigener EmailValidator.php, der die E-Mail auf korrekte Schreibweise hin überprüft erst gar nicht aufgerufen werden. Wie kann ich das anstellen?
Ich könnte natürlich in der Klasse EmailValidator prüfen, ob überhaupt ein Wert übergeben wird und falle eines leeren Strings ein return true zurückgeben, aber das erscheint mir nicht der saubere Weg zu sein.

Zuletzt ist die Reihenfolge der Ausgabe der Fehlermeldungen nicht so wie die Anordnung im Formular (Firma, Name, E-Mail, Telefon), sondern im Array ist nun email ganz oben.
Im Model ist von der Reihenfolge her zuerst $firma, $name, $email, $telefon definiert und alle mit @validate versehen.

Für Hinweise wie ich das strukturieren muss bin ich dankbar.

Mike

--
TYPO3 6.2.4
extbase 6.2.0
fluid 6.2.0

extbase_dump.png