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

_______________________________________________
TYPO3-german mailing list
TYPO3-german@lists.typo3.org
http://lists.typo3.org/cgi-bin/mailman/listinfo/typo3-german

Antwort per Email an