Latte – Do not place {variable} inside quotes
- RadaR
- Člen | 46
Mám šablonu pro Heuréka ecommerci, která je v javascriptu. Mám problém s proměnnými, které se nacházejí uvnitř <script>…</script> kódu.
Šablona vypadá takto:
<script type="text/javascript"><!--
var _hrq = _hrq || [];
_hrq.push(['setKey', '{=HEUREKA_ECOMMERCE}']);
_hrq.push(['setOrderId', '{$OBJEDNAVKA_COBJED}']);
...
</script>
Jenže když ji spustím, tak s tím má Latte problém a hlásí:
Fatal error: Uncaught exception ‚Nette\Latte\CompileException‘ with message
'Do not place {=HEUREKA_ECOMMERCE} inside quotes in …
Zkoušel jsem všechny proměnné začínat mezerou tj. { =HEUREKA_ECOMMERCE} ale nepomáhá to (sice se zbavím chybového hlášení, jenž proměnná se vůbec nepřeloží a zobrazí se to, co je ve složených závorkách).
Zkoušel jsem také změnit syntaxi, ale problém přetrvává.
Zkusil jsem také změnit jednoduché uvozovky za dvojité.
Vypnout syntaxi nemůžu, potřebuji použít {foreach} a další věci…
Jakmile překladač zjistí, že se v šabloně nachází <script>… začne zlobit.
Poradí někdo, co s tím?
PS. Latte používám samostatně.
- Oli
- Člen | 1215
Co má dělat to =HEUREKA_ECOMMERCE? to rovná se jsem snad nikdy nepoužil.
Zkus oddělat ty uvozovky nebo excapovat:
var _hrq = _hrq || [];
_hrq.push(['setKey', {=HEUREKA_ECOMMERCE}]);
_hrq.push(['setOrderId', {$OBJEDNAVKA_COBJED}]); // {!$OBJEDNAVKA_COBJED}
Editoval Oli (19. 2. 2014 11:36)
- RadaR
- Člen | 46
Co má dělat to =HEUREKA_ECOMMERCE? to rovná se jsem snad nikdy nepoužil.
Tím si v Latte vypisuju definice {=MOJE_DEFINICE}, tj. v php vytvořeno jako define(„MOJE_DEFINICE“, 123)
Zkus oddělat ty uvozovky nebo excapovat:
Joo! Vůbec mne nenapadlo ty uvozovky prostě a jednoduše smazat, nějak mi nedošlo, že si je tam Latte samo doplní. Sice vypsané hodnoty obaluje dvojitýma uvozovkama, ale to by JS mělo být jedno. Vypadá to, že řetězec je správně escapovanej.
Moc díky! Pomohlo.
- Jan Mikeš
- Člen | 771
Jeste pridam odkaz na dokumentaci, kde to je: https://latte.nette.org/cs/tags#…
<script type="text/javascript">
var pole = {$arr};
var name = {$name}; // pozor, zapisuje se bez uvozovek!
</script>
Misto escapovani vykricnikem je novy doporuceny zpusob od 2.1
{!$var}
{$var|noescape} <!-- doporucene -->