[TYPO3-german] Fluid checkbox mit checked-Vorbelegung geht nicht

Stefan Padberg post at bergische-webschmiede.de
Tue Nov 18 02:12:56 CET 2014


Ich habs hinbekommen, aber fragt nicht nach Sonnenschein: das war eine 
Ochsentour. Ich kann das hier nicht in allen Details beschreiben. Das 
wird zu ausführlich. Die Botschaft ist: es geht.

Und wer grad mit demselben Problem kämpft, der wird die folgende 
Beschreibung nützlich finden, denke ich. Ausganspunkt ist dabei die 
Beschreibung im Typo3Wiki:
http://wiki.typo3.org/TYPO3_6.0#Adding_categories_to_own_models_using_Extension_Builder

Aufgabenstellung ist, die Fluidtemplates so anzupassen, dass man 
Kategorien im Frontend mit Checkboxen(!) setzen kann.

1. Man muss statt property="categories" name="meinObjekt[categories][]" 
nehmen, damit man die Kategorie-Variable als Array aufbauen kann.

2. Bei dem eigens erzeugten Array mit dem Kategorienbaum darf man die 
uid (für den value) und title (für das Label) nicht direkt übergeben, 
sondern man muss das Kategorie-Objekt in den Kategorienbaum übergeben 
und sich daraus die uid und den title fischen.

3. Es scheint von Bedeutung zu sein, dass im TCA des Objektes der 
'categories'-Array nicht gefüllt ist. Im BE ist es egal, denn da wird es 
von makeCategorizable() überschrieben, aber im FE scheint das 
irgendwelche ungünstigen Auswirkungen zu haben.

4. Wenn die Checkboxen im Edit-Formular mit den eingebenen Werten 
vorbelegt sein sollen, muss man sie als input-Tags aufbauen und die 
Vorbelegung über eine f:for-Schleife ausfiltern:

<input type="checkbox"
name="pluginName[meinObjekt][categories][]" value="sysCategory.object.uid"
<f:for each="{objekt.categories}" as="category">
<f:if condition="{sysCategory.object.uid}=={category.uid}"> 
checked="checked"
</f:if>
</f:for>
/>
(Sehr crazy, aber funktioniert! Mit inline-Notation habe ich es nicht 
hinbekommen. Erstaunlich, dass es mit der Klammer-Notation funktioniert.)

Mit dem f:form.checkbox-Viewhelper ist es mir nicht gelungen.

Um die input-Tags dann korrekt in das Formular einzubinden, muss man 
noch ein hidden-Feld einbauen mit 
name="pluginName[meinObjekt][categories]" (ohne zusätzliche rechteckige 
Klammer!). Über den propertyMapper habe ich das auch nicht hinbekommen, 
der hat immer eine property "0" angemeckert.



Und wenn  man dann noch die Tippfehler beseitigt hat, kann man die 
System-Kategorien für das Objekt im Frontend setzen. Su-per-geil!

Beste Grüße
Stefan

Am 13.11.2014 um 19:22 schrieb Stefan Padberg:
> Hi,
>
> hier gibt es ein Problem mit den Fluid-Checkboxen.
>
> Das Objekt kann mehrere Kategorien (von 'sys_categories') haben. Im FE
> ist ein Edit-Formular, mit dem die Kategorien gesetzt werden können. Das
> funktioniert.
>
> <f:for each="{sysCategories}" as="sysCategory">
> <f:form.checkbox property="categories" value="{sysCategory.uid}" />
> </f:for>
>
> {sysCategories} ist ein eigens erzeugtes Array, mit dem Kategorienbaum
> mit seinen Ebenen nachgebildet wird.
>
> Aber die Checkboxen sind nicht vorbelegt.
>
> Die Vorbelegung bekomme ich in, wenn ich das Formular mit dem input-Tag
> aufbaue und eine verschachtelte f:for-f:if-Konstruktion für die Abfrage
> der Objekt-Kategorien mache. Aber damit wird der selektierte Wert nicht
> im Objekt abgespeichert.
>
> Hat jemand so etwas schonmal gemacht und kann hier helfen?
>
> Beste Grüße
> Stefan
>
>


-- 
--
Bergische Webschmiede
Typo3 Dienstleistungen
:: Dipl.-Ing. Stefan Padberg
:: www.bergische-webschmiede.de

---
Diese E-Mail ist frei von Viren und Malware, denn der avast! Antivirus Schutz ist aktiv.
http://www.avast.com



More information about the TYPO3-german mailing list