(nicht nur Captcha) Validierung läuft nicht mit Formular aus eigenem Modul
am 13.02.2013 - 12:29 Uhr in
Hallo zusammen,
ich hab da ein kleines Problem mit einem Captcha, bei dem die Validierung ausgesetzt zu sein scheint.
Grundsätzlich funktionieren die Captchas auf der besagten Installation reibungslos. Nur ein Captcha will nicht, und das setzt auf einem Formular auf, das von einem selbstgeschriebenen Modul per entsprechendem Hook erzeugt wird und ansonsten funktioniert. Über die Captcha-Konfigurationsseite habe ich für dieses Formular ein Image Captcha aktiviert, das auch angezeigt wird. Nur: egal, was ich eingebe, bzw. auch wenn ich nichts eingebe: da scheint keine Validierung abzulaufen. Keine Fehlermeldungen, auch nix in den Error Logs von Drupal. Ich komme immer auf die nächste Seite.
Es ist egal, ob es ein Image oder Math Captcha ist.
Außerdem ist es schon mit mehreren (auch cookietechnisch jungfräulichen) Browsern, Rechnern, eingeloggt und nicht eingeloggt getestet, Cache x-mal geleert.
Wenn ich mir auf der Seite mit dem Formular $form und $form_state ausgeben lasse, sind die potenziell relevanten Teile identisch mit der Ausgabe bei funktionierendem Captcha.
In der Issue Queue ist was von Wechselwirkungen mit Ajax die Rede, kann ich aber ausschließen, da mein Formular ansonsten kein Ajax verwendet und es ja auch nicht nur beim Image Captcha auftritt.
Bin so langsam mit meinem Latein am Ende, aber vielleicht habt ihr ja eine Idee?
LG
Sonja
- Anmelden oder Registrieren um Kommentare zu schreiben
Das Formular hat vermutlich
am 13.02.2013 - 12:35 Uhr
Das Formular hat vermutlich eine eigene Validierungsroutine. Rufst Du die normale Validierung danach auch noch auf? Sonst hängt es evtl. an dem Gewicht vom Captcha und Deinem Modul sprich es liegt an der Reihenfolge der Abarbeitungen.
Beste Grüße
Werner
.
Werner
drupal-training.de
Moderator und Drupal Trainer
* - - - - - - - - - - - - - - - - - - - - - - - - - - - *
Hallo Werner, danke für den
am 14.02.2013 - 16:55 Uhr
Hallo Werner,
danke für den Input, das war nicht der Grund, und beim Erstellen weiterer Validierung habe ich festgestellt, dass die Validierung / auch eine eigene Validierungsfunktion nicht greift.
(Und jetzt sind wieder alle hier angesprochen:)
Mit einem kleinen "Spielmodul" basierend auf einem funktionierenden Tutorial-Script hab ich die "Ursache" bzw. den störenden Parameter isolieren können, komme aber trotzdem nicht weiter.
Und zwar: sobald ich $form['#action'] einen eigenen Wert zuweise - und das muss ich leider, da ich eine andere URL aufrufen will - tritt dieser Fehler auf. Kommentiere ich es wieder aus, ist das Problem weg. Gleiches passiert, wenn ich $form['#method'] einen Wert zuweisen will. Wahrscheinlich hab ich da irgendwo einen kleinen Denk- oder Logikfehler drin, aber sehe im Moment den Wald vor Bäumen nicht. Dank Webform muss ich so selten mal Formulare programmatisch erstellen. :-(
In der Ausgabe über das Devel-Modul sieht der Pfad auch ok aus und exakt genauso wie wenn ich ein Webform auf diesen Pfad weiterleite, wo dann wiederum die Validierung auch greift.
Auch die Submit-Funktion scheint dann nicht mehr zu greifen. Also keine Validierung, kein Submit, aber die in $form['#action'] angegebene URL wird aufgerufen. :-(
Reichlich merkwürdig, das Ganze! (Zumindest aus meiner derzeitigen Sicht, aber vielleicht erhellt mich ja jemand?)
Drupal Freelancer im Rheinland gesucht?
So, bin ein Stück weiter,
am 14.02.2013 - 17:27 Uhr
So, bin ein Stück weiter, aber immer noch nicht am Ziel.
Hab rausgefunden, dass wohl nicht $form['#action'] mein Kandidat in Sachen custom URL ist, sondern $form_state['redirect'], eingebunden in die Submit-Funktion. Damit funktioniert jetzt auch immerhin schon mal meine Captcha-Validierung. :-)
Also wenn Captcha falsch, dann schöner roter Rand ...
AAAAABER: wenn Captcha richtig, dann wird die Submit-Funktion nicht aufgerufen, daher der Redirect nicht gesetzt. :-(
Wenn ich hingegen als Admin eingeloggt das gleiche Formular ohne Captcha aufrufe, dann wird die Submit-Funktion aufgerufen und der Redirect erfolgt korrekt.
Drupal Freelancer im Rheinland gesucht?
Und noch ein Stück weiter -
am 14.02.2013 - 23:52 Uhr
Und noch ein Stück weiter - aber leider ein doofes Entweder-Oder.
Im Moment alles getestet auf einem relativ sauberen Test-Nebenprojekt:
Möglichkeit a) Ich setze
$form_state['redirect']
im Submit-Handler - habe dann aber auf der Seite, auf die der Redirect zeigt, NICHT die POST-Daten des Formulars - die brauche ich aber dort, um sie weiterzuverarbeiten. Validierung und Submit-Handler laufen sauber durch.Möglichkeit b) Ich setze
$form['#action']
per hook_form_alter - HABE dann auf der Seite, die nach dem Absenden aufgerufen wird, meine POST-Daten, die ich weiterverarbeiten könnte - aber die Validierung funktioniert dann nicht, ebenso funktioniert der Submit-Handler nicht, ich brauche aber zwingend eine funktionierende Validierung.Wie kriege ich also meine POST-Daten bei funktionierender Validierung an die andere Seite übergeben?
Drupal Freelancer im Rheinland gesucht?