Presenter, nastavující layout

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

Dobrý den… Mám takový začátečnický dotaz.
Mám layout a homepage presenter, který ho v akci renderdefault nastaví.
Ale jakmile použiju jinou akci, základní funkce, které mají být v layoutu vypsány přez celý web, už samozřejmě nefungují.
Je to například uvítání v hlavičce, vypsání několika novinek pomocí modelu, …
Jak mám udělat takový jakoby hlavní presenter, který se použije vždy, a potom se použije normální?

Jan Endel
Člen | 1016
+
0
-

to je klasicka prace takzvaneho BasePresenteru. Jde v podstate o vyuziti jedne z veci objektoveho programovani, udelas basePresenter ktery obstarava vse, co chces, aby se projevilo vsude a pak v kazdem presenteru ktery takto chces vyuzit napises trebas

HomePagePresenter extends BasePresenter

a do nej to, co ma ten presenter unikatniho. Primo kdyz si nakopirujes skeleton tak tam ten basepresenter je a i v examplech v distribuci na to najdes par prikladu. Hodne stesti do zacatku.

Editoval pilec (9. 1. 2011 1:52)

mkoubik
Člen | 728
+
0
-

Jo a ten BasePresenter by měl být abstraktní (mimojiné aby nešla zadat adresa document_root/base).

Edit: on je vlastně už v sandboxu.

Editoval mkoubik (9. 1. 2011 16:21)

wodCZ
Člen | 49
+
0
-

děkuji, nedošlo mi, že všechny presentery rozšiřují base.

Nox
Člen | 378
+
0
-

No, to je na tobě jestli tam ten extends napíšeš nebo ne, ale teoreticky ano … proto by v Base měly být fakt věci které platí pro všechny (třeba nastavení jazyka) a nějaký co budou jen všude – např. ověření identity – jen tam kde mají být (u tohodle příkladu na stránkách co vyžadují autentizaci) dát do jiného presenteru (opět abstraktní) co podědí ten base a třídy s přihlášením pak dědí od ní (aspoň mě to takto přijde dobře)

bojovyletoun
Člen | 667
+
0
-

myslím, že dotaz zněl možná trochu jinak (nebo já mám jinou odpověď, každopádně BasePresenter určitě použít), ale určité rozhodnutí, které je společné může být i v Presenteru v beforeRender() například ono nastavení layoutu. Nicméně takhle nedokážu říct, které z těchto dvou bych použil.