Vykreslení Kontejneru v rámci Group

Upozornění: Tohle vlákno je hodně staré a informace nemusí být platné pro současné Nette.
danielseek
Člen | 42
+
0
-

Poradili byste mi někde, jak vykreslit Kontejner, tak aby se zobrazil spolu s dalšími prvky v té samé skupině. Zkoušel jsem i explicitně nastavit

$container->setCurrentGroup($group);

, ale stejně se mi nezobrazí prvky z toho daného kontejneru. Formulář vykresluji ručně.

{ foreach $groups as $gname => $group}
	{ foreach $group->getControls() as $control}

Problém je, že contejner nelze funkcí getControls dostat, ta vrací jen komponenty, co mají předka BaseControl

Kontejner používám ke kompozici částí formuláře, které se opakují.

Řeším také, jak se dostanu k prvkům, které nemají nějakou group. Když dám

$form->getControls()

tak mi to vyhodí úplně všechny prvky i včetně těch, jež jsou zanořeny v kontejnerech…

Dá se to nějak rozumně vyřešit? Už se s tím pachtím dvě hodiny. Mám pocit, že nette mi občas přinese více práce než užitku…

Editoval danielseek (13. 11. 2013 0:27)

Casper
Člen | 253
+
0
-

Nastavení aktuální groupy je zapotřebí zavolat před tím, než tam začneš sázet inputy.

$container->setCurrentGroup($group);
$container->addText();

Pokud používáš pro kontejnery vlastní třídy, což doporučuji, tak mrkni na BaseContainer pod čarou.

danielseek
Člen | 42
+
0
-

Děkuji za odpověď, když volám $container->setCurrentGroup($group); v metodě attached, tak vše funguje jak má.

Ještě bych tedy potřeboval vědět, jak zobrazím všechny prvky, které nejsou součástí žádné group.

Editoval danielseek (13. 11. 2013 20:22)

David Matějka
Moderator | 6445
+
0
-

pri vykreslovani se controlu nastavi option „rendered“ na true. pak staci projit vsechny controly formu a vykreslit ty, ktery nemaji option „rendered“ nastavenej na true. tak to resi nette renderer, viz https://api.nette.org/…rer.php.html#…

danielseek
Člen | 42
+
0
-

Děkuji za odpověď, nebyl jsem dostatečně důkladný při studování třidy Rendereru.