On 11/15/2014 01:01 PM, Stefan Padberg wrote:
> Am 14.11.2014 um 12:29 schrieb g4-l...@tonarchiv.ch:
>> On 11/13/2014 07:22 PM, Stefan Padberg wrote:
>>> 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
>>>
>>
>> Hallo Stefan,
>>
>> mit dem neuen Property-Mapper habe ich es bis jetzt nicht zum Laufen
>> gekriegt. Ich habe gerade vor wenigen Minuten auf der MVC-Liste
>> geposted. Ich zitiere hier einfach mal
>>
>>
>>
>> I'm doing it now without "property" argument, but by naming the form
>> fields by myself, like:
>>
>> <f:form.checkbox name="categoryArray[{category.uid}]" value="true"
>>         checked="{h:hasCategory(shop:shop, category:category)} />
>>
>> As you can see I still need an array and also a custom viewhelper for
>> setting the flags properly.
>>
>> BR,
>> Till
>
> Hallo Till,
>
> was ist das denn für ein Viewhelper h:hasCategory ?
>
> Grüße
> Stefan
>
>
Hi Stefan,

der Viewhelper guckt, ob die entspr. Kategorie gesetzt ist. Also z.B. so:

    public function render( Tx_XXX_Domain_Model_Shop $shop,
Tx_XXX_Domain_Model_Category $category) {
        foreach($shop->getCategoies) as $shopCategory){
            if ($shopCategory ==$category){
                return true;
            }
        }
       
        return false;
    }

Oder etwas genereller:

    /**
     * @param mixed $needle The searched value
     * @param mixed $array The array
     */
    public function render($needle,$array) {
        if (is_object($array)) {
            if (!$array instanceof Traversable) {
                throw new
Tx_Fluid_Core_ViewHelper_Exception('ForViewHelper only supports arrays
and objects implementing Traversable interface' , 1248728393);
            }
            $array =iterator_to_array($array);
        }
       
        return in_array($needle,$array);
    }

An der Fehleremeldung siehst Du, wo der Code ursprünglich her kommt (ist
allerdings noch old school 4.X)

Grüße,
Till

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

Antwort per Email an