Drupal-Formular-Validierung funktioniert nicht für mich
Ich versuche mich zu ändern, einige Drupal-6-Formular-code und Integration einer einheitlichen Formular-Validierung. Code sieht wie folgt aus, aber die Validierung funktioniert nicht. Ich noch nie bekommen in Funktion thisFormName_form_validate. Alle Drupalians haben einige gute Ideen?
function thisFormName_form_alter(&$form, $form_state, $form_id) {
$form['email_address'] = array(
'#type' => 'textfield',
'#title' => t('Enter your email address (optional)'),
'#default_value' => $object['email_address'],
'#weight' => 4,
'#size' => 60,
'#maxlength' => 128,
'#description' => t('Enter email address.'),
);
function thisFormName_form_validate($node, &$form) {
if ($form_state['values']['email_address'] == '')
{
form_set_error('', t('Email must be valid format if entered.'));
}
}
InformationsquelleAutor der Frage harry_T | 2010-03-04
Du musst angemeldet sein, um einen Kommentar abzugeben.
Da Sie über form verändern, so dass Sie nicht erstellen Sie die form sich selbst, sollten Sie die validation-handler selbst:
Drupal wird nur standardmäßig die Validierung ist definiert als die
form_name
+_validate
. Ist dies nicht der Fall, da Sie mithook_form_alter
.InformationsquelleAutor der Antwort googletorp
EDIT: im Grunde die gleiche Antwort wie googletorps. Haben Sie nicht bemerken, während seiner Entsendung mir. Verlassen Sie hier für die Alternative Erklärung, aber seine ist richtig und wurde zuerst (+1).
Es ist etwas faul über Ihre Funktion benennen:
Als mit allen hook-Implementierungen, Ihre
hook_form_alter
Funktion benannt werden sollten, nachdem Sie Ihren benutzerdefinierten Modul, nicht nach der form (z.B.yourModule_form_alter
), in dem Fall wäre es Auslöser für alle Formen. Wenn (wie es aussieht) Sie möchten nur die Haken in einem bestimmten Formular haben, verwenden Siehook_form_FORM_ID_alter
ersetzen von 'Haken' mit Ihr Modul-name und 'FORM_ID' mit der id (name) der form, die Sie wollen, zu manipulieren.Validierung Funktions-callbacks für ein Formular aufgeführt sind, als ein array mit Funktionsnamen in
$form['#validate']
. Es ist nur eine Bequemlichkeit Abkürzung für Formen generiert, die von sich selbstdass Sie nicht explizit hinzufügen, aber verwenden Sie eine Funktion, benannt nach der form, das hinzufügen einer '_validate' am Ende. In Ihrem Fall, Sie verändern eine form aus einem anderen Modul, so müssen Sie die Validierung Funktion explizit.Sodass Ihr code sollte wie folgt Aussehen:
InformationsquelleAutor der Antwort Henrik Opel