So ändern Sie die Hinweismeldungen bei falschen Formulareingaben
03. November 2010
formular validator validate eingaben nicht korrekt pflichtfeld required erforderlich hinweismeldung
Dieser Artikel beschreibt, wie Sie die Hinweismeldungen in Formularen anpassen, die bei Nicht- bzw. Falscheingabe nach dem Abschicken ausgegeben werden.
Über den Formulargenerator können Sie bestimmte Formularfelder als Pflichtfelder definieren. Beim Abschicken eines Formulares wird die Eingabe in solchen Feldern auf validen Inhalt geprüft. Ist eine Eingabe nicht gültig (also nicht valide, weil z.B. eine falsche oder keine Eingabe erfolgt ist), wird entsprechend darauf hingewiesen:
Um die Ausgabe dieser Hinweismeldungen individuell anzupassen, müssen Sie lediglich Textbausteine anpassen bzw. das XSL-Template bearbeiten.
Das Formular-Element finden Sie im globalen Projekt, also z.B. unter:
/[IHR-LAYOUT-PROJEKT]/wGlobal/layout/templates/items/formular.generator.wItem.php
Das nachfolgende Quelltextbeispiel zeigt Ihnen den betreffenden Auszug zur Prüfung auf Pflichtfelder. Ist ein Feld nicht valide, wird eine Hinweisbox eingeblendet, die Sie manuell anpassen können.
Beispiel: Auszug aus dem XSL-Element formular.generator.wItem.php zur Pflichtfeldeingabe
... <wsl:php> $formular->addEventServer('onBeforeBuild', '<xsl:value-of select="php:functionString('wStringconverter::maskApos', wd:fragment[@id='serverEventOnBeforeBuild']/text())"/>'); $formular->build(); if(!$formular->isValid()){ print '<![CDATA[<div class="errorMessages"><h4>'.wTexts::getText('your_entries_were_not_correctly').'</h4>]]>'; <xsl:for-each select="wd:group[@id = 'formular']/wd:item"> <xsl:choose> <xsl:when test="@type = 'formular.element.input' or @type = 'formular.element.select' or @type = 'formular.element.selectMulti' or @type = 'formular.element.checkbox' or @type = 'formular.element.radio' or @type = 'formular.element.textarea' or @type = 'formular.element.input' or @type = 'formular.element.inputPwd' or @type = 'formular.element.inputDate' or @type = 'formular.element.inputFile' or @type = 'formular.element.inputUpload' or @type = 'formular.element.captcha'"> $elementName = "<xsl:value-of select="wd:fragment[@id = 'name']/text()"/>"; print $formular->elements[$elementName]->renderErrorMessage(); </xsl:when> <xsl:when test="@type = 'formular.element.inputDouble'"> $element1Name = "<xsl:value-of select="php:functionString('wStringconverter::maskQuotes', wd:group/wd:item[1]/wd:fragment[@id = 'name']/text())"/>"; $element2Name = "<xsl:value-of select="php:functionString('wStringconverter::maskQuotes', wd:group/wd:item[2]/wd:fragment[@id = 'name']/text())"/>"; print $formular->elements[$element1Name]->renderErrorMessage(); print $formular->elements[$element2Name]->renderErrorMessage(); </xsl:when> <xsl:otherwise> </xsl:otherwise> </xsl:choose> </xsl:for-each> print '<![CDATA[</div>]]>'; } </wsl:php> ...
Die Hinweisbox wird über einen DIV-Container mit der Klasse "errorMessages" ausgegeben. Um diesen anders darzustellen, passen Sie lediglich die Klassen-Formatierung in der design.css an.
Die Überschrift der Hinweisbox wird innerhalb des Containers mit einer h4-Überschrift ausgegeben. Der Text der Überschrift ist hier entweder bei älteren Versionen des Formulargenerators direkt eingetragen oder wird über einen Textbaustein (.wTexts::getText('your_entries_were_not_correctly').) eingelesen (siehe hierzu weiterführende Links).
Die Hinweismeldungen für die entsprechenden Formularfelder werden über die for-each-Schleife ausgegeben. Dem jeweiligen Formular-Element (elements[$elementName] bzw. elements[$element1Name] und elements[$element2Name]) wird hier die entsprechende Hinweis-/Fehlermeldung zugewiesen (...renderErrorMessage()...).
Bei Eingabefeldern (wd:item[@type = 'formular.element.input']) ist dies z.B. die nachfolgend angeführte Zeile. Auch hier werden Textbausteine zur Ausgabe des Textes vor ("Bitte füllen Sie das Feld") und nach ("aus.") der Feldbenennung ($elementLabel) eingesetzt. Über diese Textbausteine können Sie für die Hinweismeldungen den Text individuell anpassen (siehe hierzu weiterführende Links).
Beispiel: Auszug aus dem XSL-Element formular.generator.wItem.php zur Fehlermeldung bei Eingabefeldern
... $elementErrorMessage = '<xsl:value-of select="php:functionString('wTexts::getText', 'formular_fill_out_pre')"/>'.$elementLabel.'<xsl:value-of select="php:functionString('wTexts::getText', 'formular_fill_out_post')"/>'; ...
Weiterführende Links
- Wie kann ich die Hinweismeldungen bei falschen Formulareingaben anpassen?
- Sie können die Ausgabe der Hinweismeldungen anpassen, indem Sie entweder Textbausteine ändern oder das relevante XSL-Template bearbeiten. Beim Abschicken wird geprüft, ob Pflichtfelder valide sind; bei Nicht- bzw. Falscheingaben wird dann eine Hinweisbox eingeblendet, deren Inhalt und Darstellung Sie individuell steuern können.
- Wo finde ich das Template, in dem die Pflichtfeldprüfung und die Ausgabe der Fehlermeldungen erfolgt?
- Im globalen Layout-Projekt. Beispielsweise unter: /IHR-LAYOUT-PROJEKT/wGlobal/layout/templates/items/formular.generator.wItem.php
- Wie wird die Hinweisbox für ungültige Pflichtfeldeingaben im Template aufgebaut?
- Wenn das Formular nicht valid ist ("if(!$formular->isValid())"), wird eine Hinweisbox ausgegeben, die über einen DIV-Container mit der Klasse "errorMessages" dargestellt wird. Die Überschrift wird innerhalb des Containers als h4-Überschrift ausgegeben.
- Wie kann ich die Überschrift der Hinweisbox ändern?
- Die h4-Überschrift enthält standardmäßig den Text (je nach Version) entweder direkt im Template oder wird über einen Textbaustein eingelesen, z. B. über wTexts::getText('your_entries_were_not_correctly'). Durch Anpassen des Textbausteins können Sie die Überschrift ändern.
- Wie werden die Fehlermeldungen für einzelne Formularfelder ausgegeben?
- Über eine for-each-Schleife werden die betroffenen Formular-Elemente durchlaufen. Für jedes ungültige Feld wird dessen Fehlermeldung zugewiesen, typischerweise über renderErrorMessage(), z. B. für Eingaben (input), Selects, Textareas, Checkboxen, Radios, Uploads, Captcha etc. Bei bestimmten Typen (z. B. inputDouble) werden auch mehrere Felder separat gerendert.
- Kann ich den Text der Feldfehlermeldungen (z. B. „Bitte füllen…“) individuell anpassen?
- Ja. Für die Fehlermeldungen von Eingabefeldern werden Textbausteine vor und nach dem Feldnamen verwendet. Im Beispiel wird der Text etwa über folgende Logik zusammengesetzt: wTexts::getText('formular_fill_out_pre') + $elementLabel + wTexts::getText('formular_fill_out_post'). Durch Anpassen dieser Textbausteine ändern Sie den genauen Wortlaut.
- Wie kann ich das Design der Hinweisbox ändern?
- Die Darstellung der Hinweisbox steuern Sie über die Klassen-Formatierung in der design.css. Da die Box als DIV mit der Klasse "errorMessages" ausgegeben wird, können Sie dort z. B. Styling für Layout, Farbe oder Schrift festlegen.