Pridanie premennej do všetkých Latte šablón v CompilerExtension
Upozornění: Tohle vlákno je hodně staré a informace nemusí být platné pro současné Nette.
- romiix.org
- Člen | 343
Je možné v CompilerExtension
pridať premennú do všetkých
šablón?
Proste TemplateFactory->create()
by malo vracať okrem svojho
bežného nastavenia aj niečo navyše.
Nejak stále neviem prísť na to, ako to spraviť.
Je to vôbec možné bez vytvorenia vlastnej implementácie
Nette\Application\UI\ITemplateFactory
?
PS: Cieľom je dostať globálne jednu konkrétnu službu do všetkých šablón.
Vďaka!
- Filip Klimeš
- Nette Blogger | 156
Šlo by předat tu službu do šablony v metodě
createTemplate()
v BasePresenter
?
- romiix.org
- Člen | 343
To áno, je to ďalšia možnosť.
Žiaľ nie je to globálne pri registrácií služby.
Iný nápad?
- David Matějka
- Moderator | 6445
pro 2.3 (zhruba, psany z hlavy):
class MyTemplateFactory implements Nette\Application\UI\ITemplateFactory
{
private $templateFactory;
public function __construct(Nette\Application\UI\ITemplateFactory $innerTemplateFactory)
{
$this->templateFactory = $innerTemplateFactory;
}
public function createTemplate(Nette\Application\UI\Control $control = NULL)
{
$template = $this->templateFactory->createTemplate($control);
$template->myVarariable = 'foo';
return $template;
}
}
services:
latte.templateFactory: {autowired: off}
myTemplateFactory: MyTemplateFactory(@latte.templateFactory)