[gelöst] PHP Fatal error: Call to undefined function custom_form_validate()
Eingetragen von Ionit (1802)
am 25.04.2016 - 00:25 Uhr in
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
https://awri.ch
Ich habe eine Schweizer Tastatur und daher kein scharfes ß ;-)
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?
Drupal rockt!!!
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!
Drupal rockt!!!
Ich habe einen dummen Fehler
am 26.04.2016 - 00:18 Uhr
Doppelpost (gelöscht)
Drupal rockt!!!
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
https://awri.ch
Ich habe eine Schweizer Tastatur und daher kein scharfes ß ;-)