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 | 667
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