[TYPO3-german] Fluid checkbox mit checked-Vorbelegung geht nicht
g4-lisz at tonarchiv.ch
g4-lisz at tonarchiv.ch
Sat Nov 15 13:46:43 CET 2014
On 11/15/2014 01:01 PM, Stefan Padberg wrote:
> Am 14.11.2014 um 12:29 schrieb g4-lisz at 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
More information about the TYPO3-german
mailing list