UIMacros::renderSnippets – test na \Nette\Application\UI\Control

- jinaq
 - Člen | 1
 
Při řešení ajaxu u formulářu jsem narazil při vykreslování vlastního formuláře na tento problém (nevim z jakého důvodu to tam je, takže to za problém prozatím považuji).
Jde mi konkrétně o tuto část:
if ($control instanceof Nette\Application\UI\Control) {
			foreach ($control->getComponents(FALSE, 'Nette\Application\UI\Control') as $child) {
				if ($child->isControlInvalid()) {
					$child->snippetMode = TRUE;
					$child->render();
					$child->snippetMode = FALSE;
				}
			}
		}
Z jakého důvodu se testuje $control na Nette\…\Control a následně se i podle stejného pravidla vybírá, když o vykreslování se „stará“ Nette\Application\UI\IRenderable (obsahuje deklaraci isControlInvalid, invalidateControl a samotný název vlastne říká, že je určena k vykreslení)?
Domnívám se, že i když jde o Ajax, je čistě problém samotného objektu, jak se s tím popere, když už je definován jako IRenderable.

- bojovyletoun
 - Člen | 668
 
Poprvé se testuje samotná komponenta, potom se z subkokomponent dané komponenty filtrují jen Nette\..\Control. Taky by mě princip zajímal. Control imp. rozhraní Irenderable a IpartiallyRenderable (které je shodné s tím předchozím, ale je zakomentované). Za další, jestli se v ` $child->render();` dá nějak vyřešit tento bug: https://github.com/…e/issues/160