šablona, syntaxe proměnné v tagu

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

Ahoj, nedaří se mi správně zapsat proměnná

v iteraci foreach :

<a href="#" onclick="$('#{$item->item_id}a').slideToggle('fast');">A</a>

Výsledný kód

<a href="#" onclick="$('#&quote;170001&quote;a').slideToggle('fast');">A</a>  atd...

zkoušel jsem kombinace \" ' . {$promena} . '

nic nefungovalo, pokud vypíšu ručně #170001a tak to funguje, mým záměrem je tedy zapsat to správně tak, aby byl výsledek

<a href="#" onclick="$('#170001a').slideToggle('fast');">A</a>
<a href="#" onclick="$('#170002a').slideToggle('fast');">A</a>
.
.
.
Lopo
Člen | 277
+
0
-

zeby hned 2 moznosti riesenia ?

<a href="#" onclick="$('#{!$item->item_id}a').slideToggle('fast');">A</a>
<a href="#" onclick="$('#'+{$item->item_id}+'a').slideToggle('fast');">A</a>

pozri si LatteMacros: {!$variable} without escaping

fidLi
Člen | 41
+
0
-

funguje to s tim vykřičníkem, děkuji

mkoubik
Člen | 728
+
0
-

Jinak ideální kandidát na použití unobtrusive javascriptu.

kravčo
Člen | 721
+
0
-

fidLi napsal(a):

funguje to s tim vykřičníkem, děkuji

Určite neodporúčam verziu s výkričníkom, pretože vnáša do kódu neošetrenú premennú (možné XSS) a rozhodne nie je best practice! Iste pokiaľ vypisuješ vlastné $item->idem_id, ktoré máš pod kontrolou, je to egál, ale akonáhle nie, prestáva to byť jedno a začínajú to byť dve. Dve s rozdielom v tom, či je v $item->item_id nejaký znak, ktorý treba escapovať – napr. ak je v ňom nejaká zloba typu: "><script type="text/javascript">alert(1);</script>. Používaj už odteraz iba

<a href="#" onclick="$('#'+{$item->item_id}+'a').slideToggle('fast');">A</a>

a nevnesieš si do iného kódu niekedy neskôr bezpečnostnú dieru.