Renderování Snippetů v Komponentě

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

Ahoj,

počátá se do budocna ještě s používáním {control calendar:small} ?

Jestli jo, tak v tomto případě se použije renderSmall() v komponentě (což v pohodě funguje), ale jakmile se použije v šabloně komponenty {snippet} a AJAX, tak nastává problém.
Při ajaxovém požadavku se totiž použije normální render().

Je to v UIMacros.php cca na řádku 500

<?php
if ($control instanceof Control) {
	foreach ($control->getComponents(FALSE, 'Control') as $child) {
		if ($child->isControlInvalid()) {
			$child->snippetMode = TRUE;
			$child->render();
			$child->snippetMode = FALSE;
		}
	}
}
?>

Dá se to nějak elegantně vyřešit? Nevim kde v této metodě renderSnippets(...) zjistit jaký renderer se má podle šablony použít…

Aurielle
Člen | 1281
+
0
-

Již dlouho hlášený bug, viz https://github.com/…e/issues/160.

newPOPE
Člen | 648
+
0
-

No jo, s tym sa uz dlho nic nerobi. je to dosti zlozite na to nieco vymyslet, par pokusov uz ma za sebou vela ludi ;-)…

Ja som to vyriesil tak ze v signale posielam param render => foo a komponenta sa nasledne renderuje ->renderFoo(). Ono nie je to nic moc, dokazes si povedat v signale ako sa komponenta vyrenderovat ale fici to…

hrach
Člen | 1838
+
0
-

gmvasek mluvi o necem jinem. To, o cem mluvi elektricman se da vyresit takto: komponente pridas metodu render, ktera zavola vsechny jeji rendery. Ty uz budou prirozene v snippetu, takze se vyrenderuji jen ty, ktere jsou treba.