podpora iterace přes FormContainer

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

Pro iteraci nad FormContainer nyní funguje následující konstrukce:

{foreach $form['some']['container']->components as $item}
	{$item->label} {$item->control}
{/foreach}

mnohem intuitivnější by bylo pokud by šlo iterovat přímo nad objektem FormContainer:

{foreach $form['some']['container'] as $item}
	{$item->label} {$item->control}
{/foreach}

je to maličkost, ale příjemná :)

Editoval pekelnik (1. 4. 2010 23:42)

Honza Marek
Člen | 1664
+
0
-

+1

Pari
Člen | 15
+
0
-

Dnes jsem to tak přesně psal a nefungovalo to, přimlouvám se za úpravu, protože tohle není příliš logické :/

jtousek
Člen | 951
+
0
-

+1

Majkl578
Moderator | 1364
+
0
-

Taky pro, dal bych to přímo do Nette\ComponentContainer.

Editoval Majkl578 (19. 6. 2010 16:13)

Vyki
Člen | 388
+
0
-

Takové chování by bylo super!

David Grudl
Nette Core | 8218
+
0
-

$form->components prochází všechny komponenty, $form->controls prochází všechny prvky implementující Nette\Forms\IFormControl. Protože by nemuselo být zřejmé, nad čím iteruje samotné $form, tak tam přímo iterátor raději není.

pekelnik
Člen | 462
+
0
-

Dovoluji si oživit toto vlákno :)

Elegatní řešení navrhuje Majkl: Dal bych to přímo do Nette\ComponentContainer

Já bych to dal do Nette\Forms\FormContainer.

Skutečně každého kdo přidá do formuláře kontejner a chce ho manuálně renderovat napadne foreach ($container as $item).

Editoval pekelnik (6. 10. 2010 14:06)

jtousek
Člen | 951
+
0
-

Jsem pro iteraci nad controls (normální komponenty většina formulářů nemá – já to alespoň ještě nepotřeboval).

phx
Člen | 651
+
0
-

Byl by nejaky priklad vyuziti normalni komponenty ve formulari? Kdyz uz komponenta tak si ji rucne vykreslim v sablone tam kam potrebuji ne?

+1