invaliadacia snippetu v inej komponente
Upozornění: Tohle vlákno je hodně staré a informace nemusí být platné pro současné Nette.

- duskohu
 - Člen | 778
 
Viete mi poradit?
mam:
komponeta A >> {snippet A}
	komponeta B >> {snippet B}
	komponeta C >> {snippet C}
ked som v A invalidujem:
$this->invalidateControl('A')
$this->invalidateControl('B')
$this->invalidateControl('C')
ked som v B invalidujem:
$this->getParent()->invalidateControl('A')
$this->invalidateControl('B')
C ??????????????????????????????
ako invalidovat C nejaky navrh???
dakujem

- Ondřej Altman
 - Člen | 17
 
$this->getParent()->getComponent(‚C‘)->invalidateControl(‚C‘);
možná pujde i:
$this->getParent()[‚C‘]->invalidateControl(‚C‘);

- Vojtěch Dobeš
 - Gold Partner | 1316
 
Třídy v Nette jsou posypané syntax cukříkem, takže by to šlo i hezky takto:
$this->parent['C']->invalidateControl('C');
Možná bude časem dobré se zamyslet, jestli by to nešlo více
dekomponovat, respektive snížit závislosti. Aktuálně tvoje komponenta
vyžaduje, aby byla připojena tak a tak, jinak zařve (v parentu bude
něco jiného, komponenta C bude taky něco jiného…). Ideální je vyčlenit
kód, kde se volají tyhle invalidateControl() třeba do nějakého
callbacku o úroveň výš, který bude volán na principu události
($onOk a $component->onOk[] = callback(...).