[TYPO3-german] Formhandler - Bei Fehler in Validierung geht einselektierter Eintrag aus einer DropDown-Liste verloren

JCL - Johannes C. Laxander jc at laxander.com
Tue Jan 29 15:05:02 CET 2013


Hallo,

problematisch sind Select-Einträge mit einem "&" drin. Formhandler macht ein htmlSpecialChars() auf alle übertragenen Werte. "A & B" wird also zu "A & B". Der gesuchte Marker ist demnach ###selected_toerntyp_A & B### und der wird nicht gefunden.

Wird das Ampersand im translation file nicht maskiert angegegben (&) führt das schon zu einem Fehler. Wird das Ampersand aber maskiert, tritt der Fehler wie hier im Posting beschrieben auf.

Dazu hat Reinhard Führicht jetzt im Bugtracker ein Ticket aufgemacht: Problem with selected markers using values from translation file - http://forge.typo3.org/issues/44900. Der Patch 44900.patch vom 29.01.2013 funktioniert aber nur für Einträge, die im translation file keine HTML-Tags wie z.B. <b>...</b> oder <br /> beinhalten. Deshalb will Reinhard noch nach einer anderen Lösung suchen.

Folgenden Workaround von Reinhard habe ich angewendet - und er funktioniert.
Für alle Select-Einträge die im Text ein maskiertes Zeichen enthalten, und die über das translation file übersetzt werden wird ein eigener Marker definiert (im nachfolgenden Beispiel sind dies "toerntyp2" und "toerntyp3"), der dann per TypoScript gesetzt werden kann.

[HTML]
<select id="toerntyp" class="select" name="###formValuesPrefix###[toerntyp]">
     <option selected="selected" value="nicht festgelegt">nicht festgelegt</option>
     <option value="###LLL:toerntyp.1###" ###selected_toerntyp_###LLL:toerntyp.1######>###LLL:toerntyp.1###</option>
     <option value="###toerntyp2Translation###" ###selected_toerntyp_###toerntyp2Translation######>toerntyp2Translation###</option>
     <option value="###toerntyp3Translation###" ###selected_toerntyp_###toerntyp3Translation######>toerntyp3Translation###</option>
     <option value="###LLL:toerntyp.4###" ###selected_toerntyp_###LLL:toerntyp.4######>###LLL:toerntyp.4###</option>
</select>
[/HTML]

[TypoScript]
markers {
     toerntyp2Translation = TEXT
     toerntyp2Translation {
         data = LLL:{$formhandlerExamples.basic.contact-form.rootPath}/lang/lang.xml:toerntyp.2
         htmlSpecialChars = 1
     }
     toerntyp3Translation = TEXT
     toerntyp3Translation {
         data = LLL:{$formhandlerExamples.basic.contact-form.rootPath}/lang/lang.xml:toerntyp.3
         htmlSpecialChars = 1
     }
}
[/TypoScript]


An diese Stelle nochmals vielen Dank an Reinhard, für seine Hilfe und Unterstützung! :-)

Gruß, Johannes.


> JCL - Johannes C. Laxander
> Gesendet: Freitag, 25. Januar 2013 10:33
> 
> 
> Hallo Reinhard, 
> 
> Die Übersetzung wird schon gefunden, denn das 
> DropDown-Listenfeld wird mit allen Einträgen in der 
> jeweiligen Sprache korrekt angezeigt. Hier ein Eintrag in der 
> entsprechenden lang.xml für default, de und nl:
> 
> <label index="toerntyp.0">nicht festgelegt</label>
> 
> Hier der generierte Quellcode:
> 
> <label for="toerntyp">Törn-Typ:</label>
> <select id="toerntyp" name="bookingrequest[toerntyp]" 
> class="select"> <option value="nicht festgelegt" 
> selected="selected">nicht festgelegt</option> <option 
> value="Option 1">Option 1</option> <option value="Option 
> 2">Option 2</option> <option value="Option 3">Option 
> 3</option> </select>
> 
> Wenn ich dann "Option 2" auswähle und das Formular hat einen 
> Fehler, wird wieder "nicht festgelegt" angezeigt. Ich hab dir 
> mal den Link auf die Seite an deine private Email geschickt.
> 
> Gruß, Johannes.
> 
> > > <!-- ###master_toerntyp### -->
> > > ###error_toerntyp###
> > > <div class="ym-fbox-select ###is_error_toerntyp###"> <label 
> > > for="toerntyp">###LLL:toerntyp###</label>
> > > <select id="toerntyp" name="###formValuesPrefix###[toerntyp]" 
> > > class="select"> <option value="###LLL:toerntyp.0###" 
> > > 
> > 
> ###selected_toerntyp_###LLL:toerntyp.0######>###LLL:toerntyp.0###</opt
> > > ion> <option value="###LLL:toerntyp.1###" 
> > > 
> > 
> ###selected_toerntyp_###LLL:toerntyp.1######>###LLL:toerntyp.1###</opt
> > > ion> <option value="###LLL:toerntyp.2###" 
> > > 
> > 
> ###selected_toerntyp_###LLL:toerntyp.2######>###LLL:toerntyp.2###</opt
> > > ion>
> > > </select>
> > > ###validate_toerntyp###
> > > </div>
> > > <!-- ###master_toerntyp### -->
> > >
> > >
> > > Wenn ich im Formular nun den zweiten oder dritten Eintrag
> > auswähle und in der Validierung tritt ein Fehler auf, ist 
> die Auswahl 
> > verloren und es wird der erste Eintrag angezeigt.
> > Ohne Fehler wird die Auswahl in die E-Mail übernommen.
> > >
> > > Ist in meiner Definition noch ein Fehler?
> > >
> > > Gruß, Johannes.
> > >
> > 
> > ich habe das ausprobiert in einem Testformular.
> > 
> > Bei mir funktioniert alles wunderbar.
> > Kann es sein, dass die Übersetzungen für toerntyp.0 usw 
> nicht gefunden 
> > werden? Wie sieht der generierte Quellcode aus?
> > 
> > Viele Grüße,
> > Reinhard



More information about the TYPO3-german mailing list