Oddělelní cache adresáře pro šablony

- knyttl
 - Člen | 196
 
Ahoj,
v BasePresenteru dědím funkci createTemplate tak, abych mohl oddělit výsledek LatteFilteru do oddělených adresářů:
<?php
protected function createTemplate() {
	$template = new FileTemplate;
        $dir = Environment::getVariable('tempDir') . '/' . $this->language . '/';
        umask(0000); @mkdir($dir, 0777);
	$template->setCacheStorage( new FileStorage( $dir ) );
...
}
?>
To by fungovalo – generuje mi to hezky adresáře v cachi podle jazyka. Problém ale je, že v šablonách používám macro {cache}…{/cache}. Výsledek jejich cachování ale jde přímo do tempDir, nezávisle na jazyku. Výsledek je ten, že cache pro jednu jazykovou mutaci se akceptuje i pro druhou mutaci. Jak vnutím tomuto makru, aby používalo také adresáře závislé na jazyce?
Díky

- kravčo
 - Člen | 721
 
Používaj vylepšené
makro {cache}...{/cache} s parametrom:
{cache $lang}
Hello world!
{/cache}
				
- knyttl
 - Člen | 196
 
Já to do teď měl takhle:
<?php
{cache "Events.$lang"}
...
{/cache}
?>
a tak to do teď fungovalo. Jak jsem ty šablony ale oddělil do adresářů, tak ta hlavní cache si asi myslí, že už vše bylo nacachované a udržuje jen první nacachovanou verzi (tedy jednu z cs nebo en, ale nikdy ne obě).

- kravčo
 - Člen | 721
 
divím sa, že ti nové riešenie vôbec funguje…
-$template = new FileTemplate;
+$template = parent::createTemplate();
Nette templejty interne nepoužívajú FileStorage, ale
PhpFileStorage… Myslím, že si zbytočne komplikuješ život,
vŕtaš do vnútorných vecí Nette. Čo, myslím, v tomto prípade vôbec
nie nutné…