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