nefunguje automatické escapeování ve script type=application/ld+json ?

RadaR
Člen | 46
+
0
-

Při přepisování našeho projektu na novou verzi Latte jsem narazil na problém, se kterým si nevím rady. Zkoušel jsem hledat radu tu po fóru, ale našel jsem jen 3+ roky stará vlákna, kde lidé řešili opačný problém.

Děje se mi to, že při vloženém bloku se neescapují řetězce v proměnných, což pak působí problém daty pro Google.

Problém replikován viz: https://fiddle.nette.org/latte/#…

U hodnot v proměnných „name“ a „description“ nedochází k escapování uvozovek, což je špatně. Jak Latte přinutit, aby se v tomto případě data escapeovaly?

Zkoušel jsem přidat n:syntax=„double“ ale problém zůstává stejný.

Díky za každou radu.

Kamil Valenta
Člen | 762
+
0
-

A když vypustíš ty vnější uvozovky?
Z:

"name": "{{$data['sklkarta_cnazev']}}",

udělat:

"name": {{$data['sklkarta_cnazev']}},
RadaR
Člen | 46
+
-2
-

@KamilValenta díky za ochotu pomoci, ale jak velký problém před napsáním odpovědi by bylo, si to ve Fiddle sám zkusit? :) Anyway – to co navrhuješ, nepomůže. Řetězec zůstane stále neescapeován.

Infanticide0
Člen | 64
+
+1
-

Pokud v Latte dáš proměnnou do uvozovek (v JS kontextu), zařve ať to neděláš. Tady se to neděje.
Když změníš z type=„application/ld+json“ na type=„application/json“, začne to fungovat – problém je v detekci kontextu.

Zkus n:attr="type: 'application/ld+json'"

Editoval Infanticide0 (3. 12. 2023 23:49)

Kamil Valenta
Člen | 762
+
+3
-

RadaR napsal(a):

@KamilValenta díky za ochotu pomoci, ale jak velký problém před napsáním odpovědi by bylo, si to ve Fiddle sám zkusit? :) Anyway – to co navrhuješ, nepomůže. Řetězec zůstane stále neescapeován.

Bylo to jen nasměrování, ale klidně si je tam vrať, když je ti to proti srsti. Necítím potřebu odvádět více práce než tazatel…

RadaR
Člen | 46
+
0
-

OK, už chápu, že problém je v kontextu obsahu. To mi dává smysl a díky.

Když si však updatnu Latte na poslední verzi, tak v souboru src/Latte/Compiler/Escaper.php stále nevidím úpravu od Davida, kterou udělal v gitu. Ač je to hlavní větev. Nejsem tak docela zorientovaný v tom, jak je tohle reálně propojeno směrem ven :)

Jaký je tedy správný postup – lze nějak composeru říct, aby aktualizoval na verzi, kterou David postl na github?

Anebo mám místo:
<script type=„application/ld+json“>

použít v šabloně:
<script type=„application/json“>

RadaR
Člen | 46
+
0
-

Kamil Valenta napsal(a):

RadaR napsal(a):

@KamilValenta díky za ochotu pomoci, ale jak velký problém před napsáním odpovědi by bylo, si to ve Fiddle sám zkusit? :) Anyway – to co navrhuješ, nepomůže. Řetězec zůstane stále neescapeován.

Bylo to jen nasměrování, ale klidně si je tam vrať, když je ti to proti srsti. Necítím potřebu odvádět více práce než tazatel…

Prosím to fakt nebylo myšleno jako urážka. Omlouvám se. Jsem vděčný každému kdo tady poradí. Já se jen reálně zamyslel, že ti muselo zabrat více času mi dát dokupy odpověď, než ve Fiddle umazat dva znaky uvozovek – a hned vidět, že to nic neřeší.

Marek Bartoš
Nette Blogger | 1175
+
+2
-

Pull request je dva týdny starý, poslední release je měsíc starý. Změna není ve stable, takže se ti nenainstaluje standardně. https://github.com/…tte/releases

Můžeš si zatím nainstalovat verzi 3.0.x-dev – stáhne se tak z gitu poslední verze s aliasem 3.0-dev https://github.com/…omposer.json#L52

RadaR
Člen | 46
+
0
-

Marek Bartoš napsal(a):

Pull request je dva týdny starý, poslední release je měsíc starý. Změna není ve stable, takže se ti nenainstaluje standardně. https://github.com/…tte/releases

Můžeš si zatím nainstalovat verzi 3.0.x-dev – stáhne se tak z gitu poslední verze s aliasem 3.0-dev https://github.com/…omposer.json#L52

Pokud ve Fiddle https://fiddle.nette.org/latte/#… přepnu na verzi 3.0.x-dev tak by to mělo být podle toho co popisuješ funkční/opravené, chápu to správně? Bohužel ani když přepnu na verzi 3.0.x-dev, tak ty proměnné stále nejsou escapeované.

EDIT: když to zkouším nyní (14.12.2023), tak už to po přepnutí na 3.0.x-dev verzi funguje zamýšleným způsobem. Ještě včera to 100% nešlo :)

Editoval RadaR (14. 12. 2023 11:33)