Komponenta v komponente jen pri signalu – vytvoreni odkazu
- hrach
- Člen | 1838
Mam komponentu B v komponente A. Komponenta B se vykresluje jen pri zavolani signalu na A. Potrebuji v komponente B vytvorit odkaz this s novym/zmenenym parametrem. Coz mi sice spravne vygeneruje nazev parametru, ale v url chybi patricne do pro A, ve kterem se komponenta B zobrazuje.
Nejake napady???
- uestla
- Backer | 799
Odchytávat změnu způsobenou komponentou B v komponentě A a
případně ručně zavolat signál pro vykreslení B a tím i zpracování
signálu v B?
EDIT:
To jsem ale blbeček – komponenta B mění jen sebe a ne komponentu A, že? To je těmi hardcore UFOs… Zkusím ještě pár chvil přemýšlet…
EDIT 2:
Zní mi to celé nějak podivně – proč jen nevyužiješ lazy loading
přes createComponent...
na místo vytváření komponenty ručně
po zavolání signálu?
Editoval uestla (23. 7. 2011 3:38)
- hrach
- Člen | 1838
uestla: komponenta B je vytvářena přes lazyloading, jen je v šabloně vykreslan v podmínce, která nastává při signálu.
Tak mě tak napadá, jestli tohle náhodou v nejnovějším nette nefunguje. Tento problém totiž řeším ve starém nette, respektive v nette ještě se starými snippety. Tzn. aby snippet komponenty A byl vyrenderován, musí být nevalidní. Jenže komponenta B se ani nedostane ke slovu, takže nelze to řešit ani znevalidněním v komponentě B.
Ohledně nového nette – jdu to zkusi.
- Filip Procházka
- Moderator | 4668
class B extends Control
{
function foo()
{
$this->getParent()->link('this', array('param' => 10));
}
}
Zkus to více rozepsat, pokud ti to stále nefunguje :)
- Jan Tvrdík
- Nette guru | 2595
$this->link('this', array(
'param' => 'foo',
'do' => $this->presenter->getParam('do'), // místo do lze požit konstantu z presenteru
));
- Filip Procházka
- Moderator | 4668
V komponentách nemusíš psát !
u signálu, všechno je
automaticky signál. Řešení od Honzy i Hracha je tudíž identické, až na
to this
(to se u komponent přeloží na aktuální signál? já
bych řekl že ne).