dynamické komponenty

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

Dobrý den všem,
s Nette začínám a jěště jsem tak docela neproniknul do podstaty a všech mechanismů, tak bych měl takový lama dotaz…

Mám testovaci aplikaci, kde je jeden presenter a několik komponent.
Komponenta A (jakoby menu) je pevně daná a posílá sama sobě signál přes Ajax. Při převzetí signálu změní komponentu B (jakoby main okno).
Řešil jsem to :

<?php $main=new $this->page($this,$this->page); // zaregistruje komponentu pod stejným názvem ?>

(asi ne příliš čisté řešení, ale šlape to :))
NEchtěl jsem to řešit přes továrnu, protože bych musel nadefinovat createComponent… pro každou možnou komponentu B.
Ale problem nastal, když jsem chtěl, aby komponenta B posílala sama sobě signály.
Odkazy se vygenerují v pořadku, ale při handlování signálů vlastně komponenta B ještě neexistuje a hodí to chybu (ano, továrna by to možná řešila…)
Zkoušel jsem vytvářet komponentu B v construktu presenteru, ale tam vlastně ještě není známo jaká komponenta se bude kreslit (komponenta A může poslat signál na změnu B a handlery ještě neproběhly)
Zkoušel jsem proměnou $page udělat persistentní a inicializovat B v __construct() = vždy se mi zobrazila jen výchozí komponenta B.
Tak jsem do handleru A dal removeComponent()… změna $page a addComponent a to mi házelo chybu, že nemůžu volat remove…
No, seděl jsem na tom včera do půlnoci a nic jsem nevymyslel…
Poraďte prosím a ušetřete mi několik bezesných nocí :-)

Editoval Rampa (24. 11. 2009 10:14)

Ondřej Mirtes
Člen | 1536
+
0
-

Jakékoli problémy s komponentami nemá smysl řešit, dokud nebude mít každá vlastní továrničku. Je to doporučený postup.