dynamické komponenty
- Rampa
- Člen | 65
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
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.