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(...
).