hledání ve stromu komponent

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

Jak a dá se najít určitá komponenta ve stromu komponent podle jména?

Oggy
Člen | 306
+
0
-

Oggy napsal(a):

Jak a dá se najít určitá komponenta ve stromu komponent podle jména?

Jak se tak dívám do dokumentace a API tak nejspíš ne.. mohu hledat jen v getComponent určité komponenty.. ale ne už v potomcích jejich potomků:-) ..

Jak tedy využíváte metodu lookup() ? ..

Můj příklad.. mám komponentu strukturaWebu a ta má potomky jednotlivé sekce a ty zase další sekce atd..
A potřebuju na úrovni té yastřešující komponenty = struktura webu si šahat do jednotlivých sekcí..uzlů..

Oggy
Člen | 306
+
0
-

Tak ještě malý poznatek.. nakonec jsem využil metodu getComponents .. to bude asi to co jsem hledal..

David Grudl
Nette Core | 8143
+
0
-

Jde o to, jestli chceš hledat směrem vzhůru (pak použij Nette\Component::getParent(), Nette\Component::lookup() nebo Nette\Component::lookupPath()), nebo směrem dovnitř a pak použij Nette\ComponentContainer::getComponent().

Funkce getComponent může vracet nejen přímé potomky, ale i potomky potomků atd. Třeba potomek menu a jeho potomek item lze získat přes getComponent('menu-item')

Oggy
Člen | 306
+
0
-

David Grudl napsal(a):

Jde o to, jestli chceš hledat směrem vzhůru (pak použij Nette\Component::getParent(), Nette\Component::lookup() nebo Nette\Component::lookupPath()), nebo směrem dovnitř a pak použij Nette\ComponentContainer::getComponent().

Funkce getComponent může vracet nejen přímé potomky, ale i potomky potomků atd. Třeba potomek menu a jeho potomek item lze získat přes getComponent('menu-item')

ještě pro ujasnění.. hledat přes getComponent nelze pokud nevim v jaké úrovni toho stromu componenta je?

getComponent(‚jmenocomponenty‘) hledá pouze v přímých potomcích..

nelze hledat o např. 2 úrovně níže podle jména?

Mikulas Dite
Člen | 756
+
0
-

Můžeš rekurzivně projít všechny potomky, https://api.nette.org/…ntainer.html#….