[gelöst] Vertipper bei E-Mail durch Vergleich mit zweitem Feld verhindern?
am 29.03.2015 - 14:35 Uhr in
Seit einiger Zeit haben wir ein Formular online in dem Leute unter anderem ihre E-Mail-Adresse zur Kontaktaufnahme hinterlassen können. Leider bekommen wir auch immer mal wieder Adressen mit unnachvollziehbaren Tippfehlern. Das ist ein Problem weil wir die entsprechenden Leute dann ja nicht mal zur Klärung des Problems kontaktieren können.
Ich bin total verblüfft, dass ich bisher nirgendwo etwas dazu gefunden habe: Ist es nicht üblich Vertipper bei E-Mail-Adressen in Formularen abzufangen indem ein zweites Feld für die selbe E-Mail-Adresse angeboten wird und das Formular nur abgeschickt werden kann, wenn in beiden Feldern tatsächlich das Selbe steht?
In PHP und Javaskript kann ich so einen banalen Vergleich ganz einfach realisieren, aber wie ist das in Drupal unter Verwendung von Entityforms möglich?
- Anmelden oder Registrieren um Kommentare zu schreiben
Dazu benötigst Du ein 2. Feld
am 29.03.2015 - 15:18 Uhr
Dazu benötigst Du ein 2. Feld und kannst diese Felder dann über eine zusätzliche Validierung prüfen, den Hook, den Du benötigst ist hook_form_alter(), siehe Beispielcode. Groß geschriebene Teile müssen entsprechend durch die korrekten Werte ersetzt werden.
<?php
/**
* Implements hook_form_alter().
*/
function TEMPLATE_form_alter(&$form, &$form_state, $form_id) {
if ($form_id = 'YOUR_FORM_NAME') {
$form['#validate'][] = 'TEMPLATE_ADDITIONAL_VALIDATE';
}
}
/**
* Additional validate function
*/
function TEMPLATE_ADDITIONAL_VALIDATE($form, &$form_state) {
if ($form_state['values']['email_1'] != $form_state['values']['email_2']) {
form_set_error('email_1', t('Your email addresses are not matching'));
}
}
?>
sense-design | online solutions | Do not hack core!
Drupalcenter Verhaltensregeln | Threads bitte auf [gelöst] stellen.
Feld-Vergleich nur über direkte Code-Eingabe?
am 29.03.2015 - 16:54 Uhr
Danke Sense,
ein zweites Feld habe ich bereits eingefügt. Ich hatte nur gehofft solch eine Validierung wäre beispielsweise über Rules realisierbar ohne PHP-Funktionen ins Template schreiben zu müssen, da ich doch sicher nicht der Einzige mit diesem Problem bin.
Dennoch vielen Dank für Deine prompte Hilfe, Sense.
Mit Rules lässt sich da
am 29.03.2015 - 16:58 Uhr
Mit Rules lässt sich da bestimmt auch was basteln, aber der Code hier ist deutlich einfacher, kannst Du einfach in deine template.php einfügen und das TEMPLATE durch den richtigen Namen deines Templates ersetzen.
sense-design | online solutions | Do not hack core!
Drupalcenter Verhaltensregeln | Threads bitte auf [gelöst] stellen.