[gelöst] PHP Fatal error: Call to undefined function custom_form_validate()
![](http://www.drupalcenter.de/files/noavatar_mini.gif)
am 25.04.2016 - 00:25 Uhr in
Hallo Freunde,
ich möchte für eine Node-Form eine eigene Validation schreiben.
Dazu habe ich anhand dieses Tutorials http://befused.com/drupal/form-validation ein Minimodul angelegt mit folgendem Code.
<?php
function MEIN_MODUL_form_alter(&$form, $form_state, $form_id) {
if ($form_id == 'sedcard_node_form') {
function custom_form_validate($form, &$form_state) {
dpm($form_state);
}
$form['#validate'][] = 'custom_form_validate';
#dpm($form);
#dpm($form['#validate']);
}
}
?>
Wenn ich den Node jetzt speichern will - bekomme ich nur einen WSOD und im error.log folgende Meldung
PHP Fatal error: Call to undefined function custom_form_validate() in /var/www/dom7/includes/form.inc on line 1519, referer: http://www.domain.com/node/100037146/edit
Ich werde nicht schlau daraus denn function custom_form_validate ist doch definiert!
Kann mir jemand sagen was ich falsch mache?
Danke und Gruß
Matthias
- Anmelden oder Registrieren um Kommentare zu schreiben
Hallo Mathias, wo ist denn
am 25.04.2016 - 06:12 Uhr
Hallo Mathias,
wo ist denn die Validate Funktion in Deinem Modul?
$form['#validate'][] = 'custom_form_validate';
Da fehlt ungefähr so etwas:
function custom_validate($form, &$form_state) {
dpm($form);
//Hier die Werte der Form prüfen und bei Fehler form_set_error Funktion benutzen.
}
Grüsse
Robert
Hallo Robert,was meinst Du
am 25.04.2016 - 18:39 Uhr
Hallo Robert,
was meinst Du damit? Die Custom Validate Function ist doch oben im Code angegeben!
<?php
function custom_form_validate($form, &$form_state) {
dpm($form_state);
}
?>
Im Tutorial http://befused.com/drupal/form-validation steht:
Create the validation function
Now you need to add a function called custom_form_validate().
Danach:
When the form is submitted, the form values will be held in $form_state. To see what is included in form_state(), add dpm($form_state); to the validation function.
Den $form_state wollte ich nun über dpm (Devel) ausgeben!
Allerdings bekomme ich, nachdem ich auf speichern geklickt habe, den WSOD und die Fehlermeldung im error.log (obwohl die custom_form_validate doch im Code angegeben wurde).
Der Validate-Handler ist in der Edit-Form auch über Devel abrufbar (siehe Anhang).
Was mache ich falsch?
Ich habe einen dummen Fehler
am 26.04.2016 - 00:14 Uhr
Ich habe einen dummen Fehler gemacht.
Die Validation-Function befand sich innerhalb von hook_form_alter.
Die Validation-Funktion muss aber außerhalb liegen (da wurde die Klammer zu spät zugemacht).
Jetzt funktioniert es und ich konnte den "Province-Bug" beim Location-Modul endlich fixen (wenn Province auf Require gestellt ist und das Land auf "Force-Default", funktioniert die Location-eigene-Validierung für die "Province" nicht sodass "Province" leer sein kann und trotzdem kann der Node gespeichert werden.)
Das ist jetzt erledigt und gefixt!
Ich habe einen dummen Fehler
am 26.04.2016 - 00:18 Uhr
Doppelpost (gelöscht)
Hallo,du hast Du Funbktion
am 26.04.2016 - 09:35 Uhr
Hallo,
du hast Du Funbktion in einer Anderen Funktion.
Statt:
<?php
function MEIN_MODUL_form_alter(&$form, $form_state, $form_id) {
if ($form_id == 'sedcard_node_form') {
function custom_form_validate($form, &$form_state) {
dpm($form_state);
}
$form['#validate'][] = 'custom_form_validate';
#dpm($form);
#dpm($form['#validate']);
}
}
?>
mach dies:
<?php
function MEIN_MODUL_form_alter(&$form, $form_state, $form_id) {
if ($form_id == 'sedcard_node_form') {
$form['#validate'][] = 'custom_form_validate'; //Name der Valide Funktion!
#dpm($form);
#dpm($form['#validate']);
}
}
//Hier die Validate Funktion
function custom_form_validate($form, &$form_state) {
dpm($form_state);
}
?>
MfG
Robert