Kde přesně zaregistrovat Helper?

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

Zdravím, v seriálu jsem našel že si lze zaregistrovat vlastní helper. Ale mě neni jasné kde přesně mám napsat ono

$tamplate->registerHelper(...)

aby byl dostupný ve všech šablonách? Díky

Tharos
Člen | 1030
+
0
-

Ideální místo je v metodě createTemplate() v nějakém BasePresenteru (tj. v presenteru, ze kterého budou dědit všechny, u kterých tu funkcionalitu vyžaduješ). Nezapomeň v překryté metodě volat rodičovskou.

joseff
Člen | 233
+
0
-

Tak jsem si to zaregistroval a dloho mi to stačilo přesně jak napsal Tharos, ale ted jsem narazil na to že si potřebuji v aplikaci vytvořit nový template a to je problém, protože všechny helpery si definuji až v BasePresenteru, takže bych potřeboval zaregistrovat heler přímo do objektu templateFile pokud možno někde v bootstapu nebo někde hned na začátku. Tak aby když zavolám new TemplateFile tak aby tam už byli registrované. Ví někdo jak na to?

Tharos
Člen | 1030
+
0
-

No a proč jednoduše nevytvářet nový template konstrukcí: $template = $this->createTemplate() kdekoliv v Presenteru. Pokud bys potřeboval takto vytvořit šablonu v nějaké komponentě, vytvoř si nějakého předka BaseControl a překryj metodu createTemplate() i v něm. Od této třídy poté můžeš odvozovat všechny komponenty. Budeš mít pak definici vlastního helperu na dvou místech, což ještě není až tak hrozné. Anebo si tu definici vlastních helperů můžeš přesunout do nějaké samostatné třídy, to je návrhově nejhezčí.

Pokud zavoláš $template = new FileTemplate(...), nezaregistrují se ti do té šablony ani standardní helpery.

Editoval Tharos (4. 1. 2011 10:41)