KDYBY/translation – po úpravě textů z adminu je nutné promazat cache

Shampoo
Člen | 38
+
0
-

Čus,

mám několik webů a řeším následující problém.
Weby jsou multijazyčné a používám Kdyby/translation.

Nette je ve verzi 2.4 nebo 3.

Problém:
Pokud změním nějaké texty v adminu, tak se nepropíší na frontend.
Tím myslím, že zůstanou staré v cache a nové se projeví, až manuálně smažu cache.

Nemám někde něco špatně nastaveno?

Díky

dakur
Člen | 357
+
0
-

@Shampoo Co znamená v adminu? Otevíráš v adminovi neon soubory a zapisuješ do nich? Pokud ano, pak je to logické. NEON soubory se zparsují, pokud cache neexistuje, a pak už se to tahá z cache (tj. z PHP souborů, do kterých se ten NEON přeložil). Jinak by web byl řádově pomalejší, kdyby musel při každém načtení louskat NEON.

Pokud potřebuješ invalidovat přeložené soubory, musíš to po úpravě v administraci udělat sám, tj. ručně smazat určitou složku v temp/

Editoval dakur (17. 2. 14:59)

Kamil Valenta
Člen | 562
+
0
-

dakur napsal(a):

Pokud potřebuješ invalidovat přeložené soubory, musíš to po úpravě v administraci udělat sám, tj. ručně smazat určitou složku v temp/

Může to promazat ta administrace :)

dakur
Člen | 357
+
+1
-

Kamil Valenta napsal(a):

dakur napsal(a):

Pokud potřebuješ invalidovat přeložené soubory, musíš to po úpravě v administraci udělat sám, tj. ručně smazat určitou složku v temp/

Může to promazat ta administrace :)

Aha, to jsem tím myslel, akorát mi nedošlo, že to má dvojí význam. 🙂 Ano, administrace, tedy něco jako:

storeUpdateNeons();
invalidTranslationCache();
Shampoo
Člen | 38
+
0
-

Nene, NEON vůbec ne…

Mám 2 moduly – FRONT a ADMIN.
Admin slouží k úpravě textů.

Mám tam prostě formuláře a po úpravě uložím text do DB, ale je potřeba promazat tu cache… Což nevím programově jak, nebo prostě zakázat tomu kdyby cachování.

Editoval Shampoo (17. 2. 17:42)

Shampoo
Člen | 38
+
0
-

@dakur @KamilValenta

Problém je v temp/cache/_Kdyby%5CTranslation%5CTranslator – tam je uložen soubor, který je cacheován… Jakmile ho smažu, tak se texty projeví na frontendu.

Editoval Shampoo (17. 2. 17:41)

Shampoo
Člen | 38
+
0
-

Tak jsem to asi vyřešil… i když ne optimálně…

V configu jsem nastavil

translation:
	debugger: true

A tím se zakáže cachování toho balíčku.
V souboru CatalogueCompiler je taky metoda invalidateCache(), ale vzhledem k velikosti a stáří webu se mi do toho nechce šahat.

Kamil Valenta
Člen | 562
+
+1
-

Shampoo napsal(a):

Což nevím programově jak

unlink() nešel?

vzhledem k velikosti a stáří webu se mi do toho nechce šahat

Celkem běžně se šahá do velkých i starých webů. V čem je problém přesně?

Shampoo
Člen | 38
+
-2
-

Kamil Valenta napsal(a):

Shampoo napsal(a):

Což nevím programově jak

unlink() nešel?

vzhledem k velikosti a stáří webu se mi do toho nechce šahat

Celkem běžně se šahá do velkých i starých webů. V čem je problém přesně?

Již vyřešeno přes Debugger: true, tím se zruší cache. Jako rychlej hack stačí.

dakur
Člen | 357
+
+5
-

@Shampoo Zapnutí debug módu není řešení, může to mít důsledky, o kterých vůbec netušíš – např. to může někde leakovat nějaká data, logovat kvanta logů etc. Konkrétně kdyby/translation neznám, ale např. Tracy by ti takhle vykecala přístupový údaje k databázi i verze všech instalovaných balíčků. Prostě to fakt není dobrý nápad, nejde to dohlídat. Debug mode patří jen a pouze do vývoje.

Pořádně to vyřešit přitom není vůbec složité. Jak píše Kamil, stačí do kódu té administrace, která zpracovává formuláře, přidat jednoduchu akci „smaž složku temp/cache/_Kdyby%5CTranslation%5CTranslator

Editoval dakur (21. 2. 7:51)