Do not place {$basePath} inside quotes

krucinal
Člen | 38
+
0
-

Ahoj, upgraduju na nette 3 a potykam se s velkou nekompatibilitou na mnoha urovnich a potrebuju help.
V tuhle chvili resim latte.

Prikladem muze byt toto:

$("div.sortable[group='" + group + "']").find("label").html('<img src="{$basePath}/images/ajax-loader-arrows.gif" />');

Coz generuje chybu: Do not place {$basePath} inside quotes

Pouzivam promennou $basePath tak jak to bylo v predchozich verzich nette doporucovane, coz je asi ok, ale nove latte uz prestalo umet to vypsat kdekoliv v sablone, coz je velky problem. konkretne mam pocit ze ta vlastnost byla odebrana uvnitr javascriptu.

Kdyz uz to budu tedy predelavat, coz zabere dost casu, jak to spravne zapsat, aby to zase s pristi verzi nette neprestalo fungovat?

Diky za kazdou radu/nazor

ali
Člen | 341
+
0
-

Zkus tohle:

$("div.sortable[group='" + group + "']").find("label").html('<img src={$basePath . "/images/ajax-loader-arrows.gif"} />');
krucinal
Člen | 38
+
0
-

ali napsal(a):

Zkus tohle:

$("div.sortable[group='" + group + "']").find("label").html('<img src={$basePath . "/images/ajax-loader-arrows.gif"} />');

Jo tohle funguje a vypada to i logicky.
Diky moc.

David Grudl
Nette Core | 7415
+
0
-

Tento způsob nebyl v žádné verzi správný natož doporučovaný, ani dosud neexistuje žádná podpora pro HTML uvnitř Javascriptu.

Element obrázku můžeš vyrobit pomocí $('<img>', {src: {$basePath} + '/images/ajax-loader-arrows.gif'}) a pak jím nahradit labely.

krucinal
Člen | 38
+
0
-

David Grudl napsal(a):

Tento způsob nebyl v žádné verzi správný natož doporučovaný, ani dosud neexistuje žádná podpora pro HTML uvnitř Javascriptu.

V principu mi nejde o podporu cehokoliv, slo jen o proste vypsani hodnoty nejake promenne v templatu, coz driv slo. Nejde mi vubec o to, aby latte jakymkoliv zpusobem cokoliv podporovalo/upravovalo/menilo, to je jen zdroj problemu. Staci mi, kdyz se vypise to co napisu ja a mam kontrolu nad tim co tam bude :)

Ad doporucovane – mas pravdu, mozna to nebylo doporucovane, ale byvalo to v prikladech a v sandboxu (pouzivani {$basePath} v sablone s tim, ze za to byl napojeny kus relativni cesty.

>

Element obrázku můžeš vyrobit pomocí $('<img>', {src: {$basePath} + '/images/ajax-loader-arrows.gif'}) a pak jím nahradit labely.

Taky reseni, i kdyz trochu zvlastni. Nedovedu si predstavit, ze bych si neco takoveho mel zapamatovat, dost kostrbate.

Kazdopadne diky za podporu

Mabar
Člen | 350
+
+3
-

V principu mi nejde o podporu cehokoliv, slo jen o proste vypsani hodnoty nejake promenne v templatu, coz driv slo. Nejde mi vubec o to, aby latte jakymkoliv zpusobem cokoliv podporovalo/upravovalo/menilo, to je jen zdroj problemu.

Tady je třeba zvážit i otázku bezpečnosti. Latte má context-aware escaping a nechat tiše projít vypsání hodnoty v neznámém, nepodporovaném či s jistotou neurčitelném kontextu může způsobit problém, pokud na escapování spoléháš