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
+
0
-

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
+
0
-

Šlo by předat tu službu do šablony v metodě createTemplate() v BasePresenter?

romiix.org
Člen | 343
+
0
-

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
+
+3
-

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)