Latte – Do not place {variable} inside quotes

Upozornění: Tohle vlákno je hodně staré a informace nemusí být platné pro současné Nette.
RadaR
Člen | 46
+
0
-

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

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

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

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