Invalidace komponenty s více rendery

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

Zdravím, narazil jsem na takový zajímavý problém. Mejměž komponentu Foo, daná komponenta má dva různé rendery:

class FooControl extends \Nette\Application\UI\Control
{
	public function renderSmall()
	{
		//zobrazeni male komponenty
	}

	public function renderLarge()
	{
		//zobrazeni velke komponenty
	}
}

a ted přichází ten problém, když koponentu v AJAXovém požadavku invaliduju

$this->invalidateControl('Foo');

tak mi celá operace skončí 500, s tím, že render neexistuje, protože je natvrdo zadrátován do kódu pro invalidaci komponenty. Dá se toto nějak elegantně řešit nebo u AJAXových komponent se spokojit jen s jedním renderem?

Elijen
Člen | 171
+
0
-

To by me taky zajimalo. Bojim se, ze tohle umi jedine presentery :-(

hrach
Člen | 1836
+
0
-

Ano, před pár dny David konečně pushnul moji opravu :)
Stačí přidat danou metodu render():

public function render()
{
	$this->renderSmall();
	$this->renderLarge();
}

Samozřejmě, můžeš si to různě podmínit :)

Editoval hrach (7. 3. 2012 14:48)