Dohledávání šablon v pluginovatelné aplikace (relativně vůči pozici presenteru)
Upozornění: Tohle vlákno je hodně staré a informace nemusí být platné pro současné Nette.
- Honza Marek
- Člen | 1664
V některých aplikacích může být šikovné, když se nějaká
funkčnost dodá pouhým dokopírováním složky. Funkčností myslím skupinu
několika presenterů, komponent a šablon. S presentery a komponentami není
z hlediska umístění problém, RobotLoader je umí najít kdekoliv. Šablony
presenterů jsou hledané pomocí metody formatTemplateFiles
.
class BasePresenter extends Presenter {
public function formatTemplateFiles($presenter, $view) {
$presenterFile = $this->getReflection()->getFileName();
$templatesDir = realpath(dirname($presenterFile) . "/../templates/");
$colonPos = strpos($presenter, ":");
if ($colonPos !== false) {
$presenter = substr($presenter, $colonPos + 1);
}
return array(
"$templatesDir/$presenter/$view.phtml",
"$templatesDir/$presenter.$view.phtml",
"$templatesDir/@global.$view.phtml",
);
}
}
Takto implementovaná metoda vyhledá šablony ve složce
umístění presenteru/../templates/cesta k šabloně
. Což je
kompatibilní i s normální adresářovou strukturou, ale presenter a jeho
šablony lze takhle umístit kamkoliv kam sahá moc RobotLoaderu.
P.S.: Doufám, že tenhle tip bude pro někoho užitečný. Já když jsem na to přišel, tak jsem z toho měl hroznou radost :-D
Editoval Jan Tvrdík (26. 2. 2010 14:02)