volani createComponent z jineho presenteru (?)

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

rad bych slysel nejakou roztomilou radu, jak resit danou situaci:
presenter A – hlavni (vychozi presenter) – napriklad neco, co se stara o homepage a par stranek
presenter B – presenter, ktery resi logovani do aplikace – tj formulare a nejake hlasky o tom, jak je uzivatel hloupy, protoze zadal spatne heslo

co kdyz ale chci i na homepage (presenter A) zobrazit formular pro zalogovani, na druhou stranu nechci delat nejaky C presenter, od ktereho by dedil A i B.

lze tedy v A udelat instanci B, zavolat „createComponent(‚fooForm‘);“ a pak si to nejak vyzobnout? „B->getComponent(‚fooForm‘);“ …

:) tedy predpokladam, ze to jde – ale spis mi jde o to, jestli je to uplne koser ;)

Jod
Člen | 701
+
0
-

No fuj, taká prasárna, keď už chcete robiť MVP/C, tak sa trochu držte konvencií a nevymýšlajte :D
Abstraktný BasePresenter ti to úplne najlepšie porieši, bars aj keď tam budeš mať len createComponentFooForm() na päť riadkov.

Editoval Jod (14. 7. 2009 11:02)

wdolek
Člen | 331
+
0
-

Jod, ale to kvuli nejakymu hloupymu formularku budu vytvaret dalsi vrstvu presenteru…

BasePresenter
+- LoginPresenter
  +- DefaultPresenter
+- FooPresenter
+- BarPresenter

:s to neni fuj ? :D

Editoval wdolek (14. 7. 2009 11:28)

Jod
Člen | 701
+
0
-

To si ty hovoríš a ja potom v robote nadávam jak besný pes, že ktorý debil toto robil, v podobných prípadoch ,)
Len nevarme špagety a pekne si tam daj ten Base (prípadne iný) presenter. Uvidíš, že sa ti v budúcnosti zíde (napríklad pri registŕacii filtrov, helperov a pod.).
Keď si pozrieš examples, tak tam tiež je.
Prípadne si môžeš tie dva presenteri extendnúť pomocou Nette/Object.

Ondřej Mirtes
Člen | 1536
+
0
-

Prostě komponenty, které využiješ ve více presenterech dej do továrničky v BasePresenteru. Nevidím v tom žádný problém.