Nefunkční iterátor u formuláře

Upozornění: Tohle vlákno je hodně staré a informace nemusí být platné pro současné Nette.
_Martin_
Generous Backer | 679
+
0
-

Ahoj,
u formuláře je ošklivý bug, když jej budu iterovat (viz. kód), tak mi vypisuje úplně jiné věci.

foreach($form as $name => $component) {
	Debug::dump($name);
	Debug::dump($component);
}

Iterování přes $form->components funguje správně. Možná tedy nejde o bug???, ale v dokumentaci je toto iterování takto uvedeno a osobně bych čekal, že tam být má – nebo se něco změnilo?

redhead
Člen | 1313
+
0
-

asi to bug není, tady se to vysvětluje (v textu):

https://doc.nette.org/cs/forms#…

David Grudl
Nette Core | 8229
+
0
-

FormContainer neimplementuje IteratorAggregate, takže iterování nad objektem je standardním iterováním nad jeho proměnnýma.

Přidat IteratorAggregate?

Jakub Lédl
Člen | 55
+
0
-

Přidat IteratorAggregate?

Proč? Dělám teda hlavně v .NETu a C#, ale zdá se mi logicky nesmyslné iterovat nad formulářem, pokud chci získat jeho komponenty. Iterovat přímo nad jeho komponentami, to je mnohem lepší :-)

_Martin_
Generous Backer | 679
+
0
-

Jakub Lédl napsal(a):

Přidat IteratorAggregate?

Proč? Dělám teda hlavně v .NETu a C#, ale zdá se mi logicky nesmyslné iterovat nad formulářem, pokud chci získat jeho komponenty. Iterovat přímo nad jeho komponentami, to je mnohem lepší :-)

Asi máš pravdu – také kvůli tomu, že lze iterovat nad $form->components a $form->controls. Takže to spíš opravit v dokumentaci.