[Frage] Checkbox auswählen mit Fluid TYPO3-Version: 6.1.1

  • peter123 peter123
    Jar Jar Binks
    0 x
    1 Beiträge
    0 Hilfreiche Beiträge
    09. 10. 2013, 10:32

    Hallo zusammen,

    ich verzweifle gerade an Fluid. Ich möchte Checkboxen auswählen, wenn ihre Keys in einem bestimmten Array vorhanden sind. Z.B. sollen sie ausgewählt sein, wenn bei der Überprüfung des Formulars Fehler festgestellt wurden. Im Checkbox-Viewhelper habe ich den Code

    1. $checked = in_array($valueAttribute, $propertyValue);
    gefunden, der genau dafür zuständig sein müsste. Allerdings habe ich keine Ahnung wie ich den einbauen muss. Kann mir jemand helfen?

    Gruß
    Peter


  • 1
  • tomeccco tomeccco
    T3PO
    0 x
    19 Beiträge
    0 Hilfreiche Beiträge
    10. 10. 2013, 11:58

    PUSH...
    Wollte eben die gleiche Frage stellen. Simples Formlar, ich erstelle kein Objekt:

    1. <f:form action="submit" controller="test" name="formularname" id="formularname">
    2. <f:form.checkbox name="arrayname[arraywert]" id="arraywert" value="somevalue" checked="{formularname.arrayname.arraywert}" class="chkbx"/>
    3. <f:form.submit value="Senden" id="buttonsenden"/>
    4. </f:form>

    Habe einen eigenen Validator aber der Status der Checkboxen geht bei einem Error verloren.

    Gruss, Tomeccco

  • jenses jenses
    Flash Gordon
    0 x
    3087 Beiträge
    106 Hilfreiche Beiträge
    21. 10. 2013, 18:18

    Habe das gleiche Problem in einer aktuellen Installation (extbase & fluid 6.1.0)

    1. <f:form method="post" action="list" name="demand" object="{demand}">
    2. ...
    3. <f:for each="{Cat1Options}" as="option" key="nyckel">
    4. <f:form.checkbox property="cat1.{nyckel}" id="cat1_{option.value}" value="{option.value}" checked="{option.checked} == 1" /> <label class="cblabel" for="cat1_{option.value}">{option.label} </label><br>
    5. </f:for>
    6. ...
    7. </f:form>

    Sobald ich im Model für irgendein beliebiges Feld die Validierung aktiviere und im Formular einen Fehler provoziere,
    verlieren alle vorher angehakten Checkboxen ihren Status. Es ist also egal, ob ich die Validierung für die Checkboxen oder ein beliebiges Input-Feld anschalte.

    Außerdem sollte doch laut diversen Behauptungen im Netz der "checked"-Status durch Fluid korrekt gesetzt werden, wenn man ordnungsgemäß

    1. <f:form.checkbox property="cat1.0" value="1" />

    statt
    1. <f:form.checkbox name="demand[cat1][]" value="1" />

    schreibt. Da passiert aber nix, egal welche der zahlreichen Tips&Tricks man ausprobiert.
    Deshalb ermittle ich den Status im Controller selbst und weise ihn dem View zu.

    Ich hab einen Bugtracker -Eintrag gemacht auf http://forge.typo3.org/issues/53011 gemacht - dummerweise ist man dort gezwungen englisch zu schreiben, obwohl ungefähr 99% der dort Anwesenden Deutsche sind :-p
    Vielleicht kann ja mal jemand von euch drüberschauen und gegebenenfalls ergänzen / deutlicher machen / ...

    Dafür, daß die Jungs seit 6-7 Jahren an extbase & fluid rumdoktern und immer behaupten, wie toll und modern das alles ist, fehlen erstaunlich viele Standardfeatures (oder sind buggig).
    Das Ganze dann noch kombiniert mit nicht vorhandenen/fehlerhaften Dokus ist echt nicht der Bringer.

  • Jonny252 Jonny252
    T3PO
    0 x
    14 Beiträge
    0 Hilfreiche Beiträge
    28. 03. 2014, 20:52

    Hast Du eine Lösung gefunden?

  • 0 x
    64 Beiträge
    4 Hilfreiche Beiträge
    02. 04. 2014, 09:13

    Klingt für mich wie das Problem hier: http://www.typo3.net/forum/thematik/zeige/thema/117127/

    Für Checkboxen müsste der Code so aussehen:

    1. <f:form.checkbox name="pizzabelag" value="salami" checked="{pizzabelag}=='salami'" /> Salami<br />
    2. <f:form.checkbox name="pizzabelag" value="schinken" checked="{pizzabelag}=='schinken'" /> Schinken

    In einer Schleife könnte es dann so aussehen:
    Array-Aufbau in PHP:

    1. $pizzabelaege = array(
    2. 'Salami' => 0,
    3. 'Schinken' => 1
    4. );

    Schleife im Template:
    1. <f:for each="{pizzabelaege}" as="gewaehlt" key="pizzabelag">
    2. <f:form.checkbox property="pizzabelaege.{pizzabelag}" value="1" checked="1=={gewaehlt}" /> {pizzabelag}<br/>
    3. </f:for>

    Ergebnis:

    1. <input type="checkbox" name="pizzabelaege[Salami]" value="1" /> Salami<br/>
    2. <input type="checkbox" name="pizzabelaege[Schinken]" value="1" checked="checked" /> Schinken<br/>

    Sollte zumindest funktionieren. Eine schönere Lösung wäre allerdings wünschenswert.

    Der Unterschied zwischen den Attributen "name" und "property" ist nach meinem Verständnis, dass es sich bei "property" um Eigenschaften des Objektes handeln muss und mit "name" können weitere Felder im Formular definiert werden, die nicht zum Model gehören. (vgl. http://www.typo3.net/forum/thematik/zeige/thema/116880/)

  • 1