Zum Inhalt springen

Checkbox auswählen mit Fluid

Erstellt am 9. Oktober 2013 · 4 Antworten · letzte Antwort am 2. April 2014

Tags: Fluid, ViewHelper, TYPO3 6.x, Frage

peter123 ·

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

$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

tomeccco ·

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

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

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

Gruss, Tomeccco

jenses ·

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

<f:form method="post" action="list" name="demand" object="{demand}">
...
<f:for each="{Cat1Options}" as="option" key="nyckel">
<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>
</f:for>
...
</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äß

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

statt

<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.

Unbekannter Benutzer ·

Klingt für mich wie das Problem hier: #117127

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

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

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

$pizzabelaege = array(
'Salami' => 0,
'Schinken' => 1
);

Schleife im Template:

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

Ergebnis:

<input type="checkbox" name="pizzabelaege[Salami]" value="1" /> Salami<br/>
<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. #116880)