Äh, das ist doch der fundamentale Unterschied bei meiner Lösung: kein extra Viewhelper!

Gruß
Stefan

Am 19.11.2014 um 00:48 schrieb g4-l...@tonarchiv.ch:
Sehe jetzt nicht wirklich, wo der Unterschied zu meiner Lösung ist
(außer, dass ich den Viewhelper verwendet habe)...

Grüße,
till

On 11/18/2014 02:12 AM, Stefan Padberg wrote:
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