[Frage] Formhandler löscht values bei Verwendung von Arrays TYPO3-Version: 4.6.0

  • christianknell christian...
    TYPO3-Anwärter
    0 x
    3 Beiträge
    0 Hilfreiche Beiträge
    04. 12. 2013, 17:45

    Hallo miteinander,

    Ich rätsel jetzt schon seit einigen Stunden und hab nun keine Idee mehr um mein Problem zu lösen. Vielleicht habt ihr ja ne Idee.

    Danke euch auf jeden Fall schon mal!

    Ich verwende Formhandler um ein Formular auf einer TYPO3-Seite zu erstellen. Dies funktioniert auch absolut einwandfrei und ich bin sehr zufrieden damit, aber eine kleine Sache bekomm ich einfach nicht zum Laufen: Ich hab mehrere Checkboxen mit dem Namen "[i]whyVisit[/i]", von denen mindestens 1 aktiviert werden soll. Dies erreiche ich indem ich zunächst den Namen der Checkboxen zu einem Array umgestalte (siehe Template).

    In meinem TypoScript überprüft die Zeile

    1. whyVisit.errorCheck.1 = required

    ob eine Checkbox aktiviert wurde, falls nicht wird eine Fehlermeldung beim Marker
    1. ###error_whyVisit###
    ausgegeben. Dies funktioniert auch einwandfrei.

    DAS PROBLEM ist nun folgendes: [b]Alle nachfolgenden Input- und Select-Felder behalten beim Absenden des Formulars ihre Werte nicht.[/b]

    Wenn ich bspw. dem Input-Feld "[i]whyVisitOther[/i]" (siehe Template) den Inhalt "[i]Test-Inhalt[/i]" mitgebe, wird er mir beim erneuten Anzeigen meines Formulars zwar im DEBUG-Bereich als Inhalt angezeigt, jedoch im HTML-Quellcode ist das value-Attribut leer und damit logischerweise auch die Anzeige meines Formulars.

    Ändere ich nun den Namen meiner Checkboxen wieder ab und entferne die Arrays funktioniert die Übertragen der anderen Felder einwandfrei, jedoch funktioniert meine Validierung, ob eine Checkbox aktiviert wurde nicht mehr.

    Hier der Ausschnitt aus meinem Template:

    1. <h2 id="whyVisist">###LLL:whyVisit###</h2>
    2.  
    3. ###error_whyVisit###
    4. <div class="line">
    5. <div class="lineOneThird">
    6. <input type="checkbox" value="###LLL:whyVisit01###" name="formhandler[whyVisit][]" tabindex="210" ###checked_whyVisit_###LLL:whyVisit01######/>
    7. <label>###LLL:whyVisit01###</label>
    8. </div>
    9. <div class="lineOneThird">
    10. <input type="checkbox" value="###LLL:whyVisit02###" name="formhandler[whyVisit][]" tabindex="220" ###checked_whyVisit_###LLL:whyVisit02######/>
    11. <label>###LLL:whyVisit02###</label>
    12. </div>
    13. <div class="lineOneThird">
    14. <input type="checkbox" value="###LLL:whyVisit03###" name="formhandler[whyVisit][]" tabindex="230" ###checked_whyVisit_###LLL:whyVisit03######/>
    15. <label>###LLL:whyVisit03###</label>
    16. </div>
    17. </div>
    18.  
    19. <div class="line">
    20. <div class="lineOneThird">
    21. <input type="checkbox" value="###LLL:whyVisit07###" name="formhandler[whyVisit][]" tabindex="270" ###checked_whyVisit_###LLL:whyVisit07######/>
    22. <label>###LLL:whyVisit07###</label>
    23. </div>
    24. <div class="lineTwoThird">
    25. <label>###LLL:whyVisitOther###</label>
    26. <input type="text" value="###value_whyVisitOther###" name="formhandler[whyVisitOther]" class="twoThird" tabindex="280"/>
    27. </div>
    28. </div>
    29. <!-- WhyVisit End -->


  • 1
  • christianknell christian...
    TYPO3-Anwärter
    0 x
    3 Beiträge
    0 Hilfreiche Beiträge
    05. 12. 2013, 11:21

    Hab zwar immernoch keine Ahnung wieso das so nicht geht bzw. warum er mir meine nachfolgenden Werte nicht speichert, aber dafür hab ich jetzt nen Workaround gefunden:

    1. Alle Checkboxen erhalten unterschiedliche Namen (bei mir nun whyVisit01, whyVisit02, ... whyVisit07)
    2. Mittels TypoScript werden alle Checkboxen auf required gesetzt

    1. whyVisit01.errorCheck.1 = required
    2. whyVisit02.errorCheck.1 = required
    3. whyVisit03.errorCheck.1 = required
    4. whyVisit04.errorCheck.1 = required
    5. whyVisit05.errorCheck.1 = required
    6. whyVisit06.errorCheck.1 = required
    7. whyVisit07.errorCheck.1 = required
    8. whyVisitOther.errorCheck.1 = required

    3. Im HTML-Template wird jedoch nur ein Marker für eine beliebige Checkbox hinterlegt:
    1. ###error_whyVisit01###

    4. Hinterlegen der Error-Message in der Language-File
    5. Mittels TypoScript wird die Fehlerüberprüfung aller Checkboxen abgeschaltet, sobald eine aktiviert wurde:
    1. 3 {
    2. conditions.OR1.AND1 = whyVisit01>
    3. isTrue {
    4. validators.1.config.disableErrorCheckFields = whyVisit02, ..., whyVisit07, whyVisitOther
    5. }
    6. }
    7. 4 {
    8. conditions.OR1.AND1 = whyVisit02>
    9. isTrue {
    10. validators.1.config.disableErrorCheckFields = whyVisit01, ..., whyVisit07, whyVisitOther
    11. }
    12. }
    13. ...
    14. 10 {
    15. conditions.OR1.AND1 = whyVisitOther>
    16. isTrue {
    17. validators.1.config.disableErrorCheckFields = whyVisit01, ..., whyVisit06, whyVisit07
    18. }
    19. }

  • 1