Invalidace cache latte šablony z jiného prezenteru
- Blaueminence
- Člen | 31
Ahoj,
snažím se invalidovat cache šablony pomocí tagů. Když to dělám v dotyčném prezenteru, stačí zavolat
$cache = new Cache($this->template->getCacheStorage(), 'Nette.FileTemplate');
$this->clean(array(
Cache::TAGS => array("obdobi","vypis_prihlasek"),
));
ovšem v jiném prezenteru (navíc v jiném modulu, a sice backendu) nejspíš nedokážu správně získat dotyčnou cache šablony.
Zkoušel jsem
$template = new Nette\Templating\FileTemplate(ROOT_DIR . '/app/FrontModule/templates/Kurz/default.latte');
$cache = new Cache($template->getCacheStorage(), 'Nette.FileTemplate');
a taky
$cache = new Cache($this->presenter['Front:Kurz']->template->getCacheStorage(), 'Nette.FileTemplate');
což navíc vyhazuje, že komponenta neexistuje (nevím, jak na prezenter správně odkázat).
Díky za případnou pomoc.
- Myiyk
- Člen | 321
Aby jsi mohl smazat cache z šablon podle tagů, tak se nemusíš připojit na stejný jmenný prostor.
V config.neon si dej
services:
- Nette\Caching\Cache
A v BasePresenter
/** @var Nette\Caching\Cache */
private $cache;
public function getCache()
{
return $this->cache;
}
function __construct(\Nette\DI\Container $c)
{
parent::__construct();
$this->cache = new \Nette\Caching\Cache($c->getByType("Nette\Caching\IStorage"));
}
A potom bude ve všech presenter které od něj dědí možno mazat cache pomocí
$this->cache->clean(array(
Cache::TAGS => array("obdobi","vypis_prihlasek"),
));
Editoval Myiyk (8. 11. 2014 14:19)
- st3n
- Člen | 1
zdravim
pouzil sem stejny kod u sebe a kdyz se snazim pracovat s promennou cache ci uz
v base nebo jinych presenterech porad nemam cache objekt ale jen null
(chyba-non object)
skousel jsem uz vsechno
Myiyk napsal(a):
Aby jsi mohl smazat cache z šablon podle tagů, tak se nemusíš připojit na stejný jmenný prostor.
V config.neon si dej
services: - Nette\Caching\Cache
A v BasePresenter
/** @var Nette\Caching\Cache */ private $cache; public function getCache() { return $this->cache; } function __construct(\Nette\DI\Container $c) { parent::__construct(); $this->cache = new \Nette\Caching\Cache($c->getByType("Nette\Caching\IStorage")); }
A potom bude ve všech presenter které od něj dědí možno mazat cache pomocí
$this->cache->clean(array( Cache::TAGS => array("obdobi","vypis_prihlasek"), ));