Komponenta ovlivněná jinou komponentou

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

Ahoj, mam dotaz ohledně „spoluprace“ 2 komponent. Asi to bude celkem casty pripad.

Mam vypis uzivatelu jako komponentu a formular na filtrovani uzivatelu jako komponentu. Obe komponenty na jedne strance. Formular odesila pozadavky na filtrovani uzivatelu pres ajax a komponenta pro vypis uzivatelu by se mela byt schopna na zaklade zmeneneho filtrovani ajaxove prekreslit.

Jak toto nejlepe resit? Nerad bych slucoval obe nezavisle casti (vypis + filtrovani) do jedne komponenty. Je lepsi reseni?

Diky moc.

Editoval Vladik_hk (13. 3. 2011 13:27)

bojovyletoun
Člen | 667
+
0
-

Nevím, zda se to bude hodit pro to, co potřebuješ, nevím, jak je to řešené. Myslím, že s jednou komponentou, by to šlo taky zvládnout.
Nenapíšu konkrétní kód, ale dobré by bylo použít signály. „A“ chce poslat signál a „B“ ho chce zpracovat:

  • v šabloně A vytvoříš odkaz <a href=„{$presenter[‚B‘]->link("message!“,>Ahoj}
  • B má metodu handleMessage($param){…}

V případě 2směrné komunikace by se to zduplikovalo, jen by se zaměnilo AaB.

Patrik Votoček
Člen | 2221
+
0
-

asi bych to řešil persistentníma parametrama v presenteru které si budou komponenty číst a ovlivňovat.

jtousek
Člen | 951
+
0
-

Další varianta je vytvářet jednu z komponent (ten formulář) jako potomka té druhé a nikoli potomka presenteru. Ale dost záleží na detailech, co potřebuješ aby to umělo a jak to fungovalo.