Komponenta v komponente jen pri signalu – vytvoreni odkazu

- hrach
 - Člen | 1844
 
Mam komponentu B v komponente A. Komponenta B se vykresluje jen pri zavolani signalu na A. Potrebuji v komponente B vytvorit odkaz this s novym/zmenenym parametrem. Coz mi sice spravne vygeneruje nazev parametru, ale v url chybi patricne do pro A, ve kterem se komponenta B zobrazuje.
Nejake napady???

- uestla
 - Backer | 799
 
Odchytávat změnu způsobenou komponentou B v komponentě A a
případně ručně zavolat signál pro vykreslení B a tím i zpracování
signálu v B?
EDIT:
To jsem ale blbeček – komponenta B mění jen sebe a ne komponentu A, že? To je těmi hardcore UFOs… Zkusím ještě pár chvil přemýšlet…
EDIT 2:
Zní mi to celé nějak podivně – proč jen nevyužiješ lazy loading
přes createComponent... na místo vytváření komponenty ručně
po zavolání signálu?
Editoval uestla (23. 7. 2011 3:38)

- hrach
 - Člen | 1844
 
uestla: komponenta B je vytvářena přes lazyloading, jen je v šabloně vykreslan v podmínce, která nastává při signálu.
Tak mě tak napadá, jestli tohle náhodou v nejnovějším nette nefunguje. Tento problém totiž řeším ve starém nette, respektive v nette ještě se starými snippety. Tzn. aby snippet komponenty A byl vyrenderován, musí být nevalidní. Jenže komponenta B se ani nedostane ke slovu, takže nelze to řešit ani znevalidněním v komponentě B.
Ohledně nového nette – jdu to zkusi.

- Filip Procházka
 - Moderator | 4668
 
class B extends Control
{
	function foo()
	{
		$this->getParent()->link('this', array('param' => 10));
	}
}
Zkus to více rozepsat, pokud ti to stále nefunguje :)

- Jan Tvrdík
 - Nette guru | 2595
 
$this->link('this', array(
	'param' => 'foo',
	'do' => $this->presenter->getParam('do'), // místo do lze požit konstantu z presenteru
));
				
- Filip Procházka
 - Moderator | 4668
 
V komponentách nemusíš psát ! u signálu, všechno je
automaticky signál. Řešení od Honzy i Hracha je tudíž identické, až na
to this (to se u komponent přeloží na aktuální signál? já
bych řekl že ne).