nefunguje automatické escapeování ve script type=application/ld+json ?
- RadaR
- Člen | 46
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 | 815
A když vypustíš ty vnější uvozovky?
Z:
"name": "{{$data['sklkarta_cnazev']}}",
udělat:
"name": {{$data['sklkarta_cnazev']}},
- Infanticide0
- Člen | 103
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 | 815
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
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
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 | 1263
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
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 aliasem3.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)