Ako v service vytvorit template?
Upozornění: Tohle vlákno je hodně staré a informace nemusí být platné pro současné Nette.
- duskohu
- Člen | 778
Caute mam nejaku sluzbu a potrebujem v nej vytvorit template, ako vytvorim template v ktorej budu aj macra ktore sa registruju v estension. Potrebujem mamt template ktora ma makra a helpery ktore ma Control sablona, ako to mam riesit?
class OrderPdf extends Object
{
private function createTemplate()
{
$template = new FileTemplate();
$template->registerFilter(new Engine());
$template->registerHelperLoader('Nette\Templating\Helpers::loader');
return $template;
}
}
- enumag
- Člen | 2118
Dokud v Nette není TemplateFactory jako service tak nejjednodušší hack je asi injectnout Application a použít:
$template = $this->application->getPresenter()->createTemplate();
Koukám že ta metoda je protected takže ještě tohle do BasePresenteru:
public function createTemplate($class = NULL)
{
return parent::createTemplate($class);
}
Že to není čisté je asi každému jasné, ale to osobně považuji za chybu Nette. Čisté řešení je imho služba TemplateFactory což znamená duplikovat kód z Presenteru a i tahle služba bude hacknutá aby bylo možné generovat odkazy.
Editoval enumag (29. 11. 2013 23:33)