So ändern Sie die Hinweismeldungen bei falschen Formulareingaben

03. Nov 2010

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:

Kontaktformular mit Pflichtfeld-Hinweisenzoom
Kontaktformular mit Pflichtfeld-Hinweisen

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-Globales-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-&gt;addEventServer('onBeforeBuild', '<xsl:value-of select="php:functionString('wStringconverter::maskApos', wd:fragment[@id='serverEventOnBeforeBuild']/text())"/>');
  $formular-&gt;build();
  if(!$formular-&gt;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-&gt;elements[$elementName]-&gt;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-&gt;elements[$element1Name]-&gt;renderErrorMessage();                
          print $formular-&gt;elements[$element2Name]-&gt;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')"/>';
...

Ähnliche Seiten

Entwicklerbereich Weblication® CMS - © Scholl Communications AG