FAPI - Validierungsfehler bei Feld anzeigen
![](https://www.drupalcenter.de/files/imagecache/upic_mini/pictures/picture-5283.jpg)
am 01.09.2009 - 13:19 Uhr in
Hi, gibt es eine Möglichkeit, beim Validieren von Formularen die Form-Fehler nicht oben in einer Liste anzuzeigen sondern diese bei den entsprechenden Feldern stehen zu haben?
Grüße
Manuel
- Anmelden oder Registrieren um Kommentare zu schreiben
jep, dazu einfach in
am 02.09.2009 - 11:53 Uhr
jep, dazu einfach in form_set_error den Parameter 'name' benutzten.
s.H. http://api.drupal.org/api/function/form_set_error
--------------
Blog www.freeblogger.org: Deutscher IRC-Channel: irc.freenode.net #drupal.de ... Jabber-me: dwehner@im.calug.de
SirFiChi ist auch dein Halbgott.
Das geht meiner Meinung nach
am 02.09.2009 - 12:05 Uhr
Das geht meiner Meinung nach nicht. Es wir dann das Feld zwar Rot markiert, der Text steht aber immer noch oben in den Messages
______________________________________
Softwareentwicklung / Webdesign BrightSolutions
Fehlermeldungen wie
am 02.09.2009 - 12:14 Uhr
Fehlermeldungen wie Validierungsfehler sind Drupal Messages. Alle Messages zeigt Drupal an der gleichen Position. Egal ob Error, Warning oder Status.
Ich denke auch das man nicht so ohne Weiteres Validierungs-Error-Messages an den jeweiligen Formfeldern anzeigen kann.
Wobei dies eigentlich nicht die Frage ist. Das Ganze ist eher eine Frage der Usability. Wenn auf der gesamten Website alle Messages an der gleichen Position angezeigt werden ist es fuer mich fraglich ob man bei Validierungs-Error-Messages diese Regel brechen sollte.
------------------------
Quiptime Group
Fehlermeldungen
am 02.09.2009 - 13:06 Uhr
Abgesehen von der Benutzbarkeit und anderen Dingen funktioniert das vielleicht so:
* kleines Modul
* hook_form_alter() und dort eine eigene Validierungsfunktion an das Formular hängen (zusätzlich, nicht die Bestehende ersetzen!)
* in der Validierungsfunktion in jedem Element des Formulars (
$form
) nachschauen, ob da ein Fehler aufgetreten ist (mal im Element-Array schauen, da müsste es "error" geben) und dann die entsprechende Meldung aus$_SESSION['messages']
an das Feld packen.(definitiv nicht funktionierender) Code:
<?php
function mymodule_FORM_ID_validate(&$form, &$form_state) {
// innerhalb der Schleife
$index++
$form[$elementname]['#prefix'] = '<div class="message message-error">' . $_SESSION['messages']['error'][$index] . '</div>';
}
?>
so ungefähr bekommt man das hin.
Und nicht vergessen, die Messages aus der Session rauszuschmeissen, sonst werden sie oben auch nochmal angezeigt!
hth,
Stefan
directly from brain to keyboard
--
sei nett zu Deinem Themer
Na ja ich finde bei
am 02.09.2009 - 13:07 Uhr
Na ja ich finde bei Formularfeldern sollte das schon beim entsprechenden Feld stehen, gerade wenn es eben ein sehr langes formular ist. Das ist in meinen Augen auf jeden Fall benutzerfreundlicher. Aber darüber lässt sich sicher streiten.
Ich bastele gerade eine Lösung zurecht und werde dazu eine Anleitung schreiben und sie dann hier veröffentlich.
______________________________________
Softwareentwicklung / Webdesign BrightSolutions
Es gobt ein Mpodul
am 02.09.2009 - 13:27 Uhr
Hallo,
genau für diesen Zweck gibt es denke ich das Modul Inline Messages. Habe es selbst noch nicht ausprobiert, die Beschreibung jedoch sieht vielversprechend aus.
Es ist schon unglaublich was
am 02.09.2009 - 13:32 Uhr
Es ist schon unglaublich was es so an Drupalmodulen gibt.
Schade das die Demosite von Inline Errors dies nicht demonstriert sondern genau das macht was Drupals uebliche Praxis ist - die Error messages oben platzieren.
------------------------
Quiptime Group
http://drupalmodules.com/
am 02.09.2009 - 13:44 Uhr
Und bei der Suche hilft einem die Seite http://drupalmodules.com ungemein.
Das Module scheint gut zu
am 02.09.2009 - 13:55 Uhr
Das Module scheint gut zu sein. Allerdings nur mit Javascript. Ich schaue es mir mal an.
______________________________________
Softwareentwicklung / Webdesign BrightSolutions
Ich habe es mal getestet,
am 02.09.2009 - 14:02 Uhr
Ich habe es mal getestet, das verschiebt die Nachricht nicht zu den Feldern. Habe zwar nicht lange rumprobiert, aber es scheint als würden die Messages einfach an eine andere Stelle verschoben werden (bei mir Rechts im Bild...)
______________________________________
Softwareentwicklung / Webdesign BrightSolutions
... nachlässige Veröffentlichung eines contributed Modules
am 02.09.2009 - 14:19 Uhr
Hast Du das jQuery Plugin "ScrollTo" aktiviert?
Es wird vom Modul inline_errors.module verwendet
define('SCROLLTO_PATH_DEFAULT', drupal_get_path('module', 'inline_errors') .'/js/jquery.scrollTo-1.4.0-min.js');
aber es befindet sich weder im genannten JS Modul Ordner noch sagt die README.txt etwas dazu.
Aus meiner Sicht eine etwas nachlässige Veröffentlichung eines contributed Modules.
PS
Es gibt noch ein Issue.
Inline Errors does not work with the core Poll module
------------------------
Quiptime Group
Die Lizensbestimmungen des
am 02.09.2009 - 15:18 Uhr
Die Lizensbestimmungen des Jquery-Modules verbieten es wohl, dass es mit anderen Modulen zum Download bereitgestellt wird, daher muss man es auf der Originalseite herunterladen.
Aber dennoch funktioniert es irgendwie nicht auf anhieb wie es soll...das JQueryPlugin wurde erkannt und befindet sich ander richigen Stelle.
______________________________________
Softwareentwicklung / Webdesign BrightSolutions
Für alle, die diese
am 03.09.2009 - 13:08 Uhr
Für alle, die diese Funktion evtl auch Sinnvoll finden habe ich eine kurze Anleitung und ein Beispielmodul geschrieben. Das ganze findet Ihr unter
Drupal FAPI: Formularfehler unter Feldern anzeigen
Bei Frage gerne melden.
______________________________________
Softwareentwicklung / Webdesign BrightSolutions