Dotaz na to, jak vlastně fungují šablony, presentery

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

Ahoj. Chci se zeptat, jak vlastně fungují ty šabllony a presentery? Tedy, Mám třídu ArticlePresenter (Na jméně souboru nezáleží? Zkoušel jsem to a zjistil jsem že asi ne.) a podle jména této třídy pak tedy musí být dodržen i název adresáře „Article“, který se nachazí v adresáři templates? A musí mít ta třída v názvu slovo Presenter? Pak, v té třídě ArticlePresenter jsou metody: action<něco>(), render<něco>(). To <něco> musí pak mít přesně stejný název, jako oen soubor se šablonou v tom adresáři templates/Article? Musí tam bejt vždycky Default a soubor s názvem default.latte nebo to lze i změnit? Omlouvám se, že to takle píšu a takhle blbě se na to ptám (Smát se je povoleno :-) ), ale ani z dokumentace to prostě nechápu. Proto vás prosím, pokud budete tak hodní, pokuste se mi to zde visvětlit než abyste mi dávali odkazi na něco, co už jsem viděl. Velice vám děkuji za snahu. :-)

besanek
Člen | 128
+
0
-
  • Název presenteru musí obsahovat pouze alfanumerické znaky. (Nevím jistě)
  • v současné verzi musí být přípona Presenter, ale ve verzi 2.1 se bude dát změnit.
  • To <něco> nemusí mít stejný název jako soubor. Dá se šabloně podstrčit jiný soubor, ale nenapadá mě rozumný důvod proč to dělat.
  • Nemusí tam být Default. Tohle je výhradně věc routeru jaký view si zvolí jako výchozí.
jiri.pudil
Nette Blogger | 1032
+
0
-

Na jméně souboru nezáleží? Zkoušel jsem to a zjistil jsem že asi ne.

Nezáleží, přinejmenším pokud se o načítání stará RobotLoader.

(…) a podle jména této třídy pak tedy musí být dodržen i název adresáře „Article“, který se nachazí v adresáři templates? (…) Pak, v té třídě ArticlePresenter jsou metody: action<něco>(), render<něco>(). To <něco> musí pak mít přesně stejný název, jako oen soubor se šablonou v tom adresáři templates/Article?

Takové je výchozí chování. Můžeš jej změnit přepsáním několika metod v presenteru (formatLayoutTemplateFiles, formatTemplateFiles, formatActionMethod a formatRenderMethod).

A musí mít ta třída v názvu slovo Presenter?

To je opět výchozí nastavení. Stará se o to PresenterFactory::formatPresenterClass. Změna není nemožná, ale už by byla o něco složitější než v předchozím případě.

Musí tam bejt vždycky Default a soubor s názvem default.latte nebo to lze i změnit?

Ne. Presentery si pojmenuj, jak uznáš za vhodné. Potom to ale musíš zohledit v routování. Například výchozí routa v sandboxu směřuje na Homepage:default, nikoliv Default:default.

pokuste se mi to zde visvětlit

*vysvětlit

Editoval jiri.pudil (31. 5. 2013 23:05)