Escapování neuzavřených hodnot HTML atributů
- vrana
- Člen | 131
Nette nevyžaduje používání XHTML, ale hodnoty atributů ošetřuje
správně pouze pokud jsou uzavřené do uvozovek nebo apostrofů.
<span title=x>
je platný HTML kód, ale
<span title={$x}>
Nette správně neošetří. Vidím v tom
jistý rozpor.
Tato syntaxe je povolená v XHP, které teď denně používám, a musím říct, že jsem si na ni celkem rychle zvykl a uvozovky považuji v této situaci už spíše za nadbytečné.
Implementoval jsem podporu pro toto ošetřování v branchi html-escape, tak to můžete vyzkoušet, otestovat a zkontrolovat. Zajímá mě, co na tuto syntaxi říkáte.
Poznámky:
<span title="{$x}">
a<span title='{$x}'>
samozřejmě nadále funguje.<span title=a{$x}b>
nebo<span title={$x}{$y}>
naopak nefunguje. To je stejné jako v XHP a v podstatě žádoucí.<span title={$x}>
se přeloží na'<span title="' . htmlspecialchars($x) . '">'
.
- juzna.cz
- Člen | 248
<span title=a{$x}b>
nebo<span title={$x}{$y}>
naopak nefunguje.
Tyto pripady by mohly zobrazit nejakou chybu, jako E_USER_NOTICE
nebo E_STRICT
. Tudiz by to fungovalo kdyby to nekdo fakt chtel, ale
aspon by to cloveka upozornilo, ze neco dela spatne (coz je vlastne vyznam
E_NOTICE
a E_STRICT
).
Jinak skvela feature, hlavne to neukazujte klukum ze Zendu, ti by to asi nerozdychali :D
- vrana
- Člen | 131
juzna.cz napsal(a):
Tyto pripady by mohly zobrazit nejakou chybu, jako
E_USER_NOTICE
neboE_STRICT
. Tudiz by to fungovalo kdyby to nekdo fakt chtel, ale aspon by to cloveka upozornilo, ze neco dela spatne (coz je vlastne vyznamE_NOTICE
aE_STRICT
).
Souhlasím, ale dělat se mi to nechce. Podíváš se na to?
- David Grudl
- Nette Core | 8227
V současné implementaci je ještě ten problém, že nefunguje ani
<span title={$x} {$attrs}>
Kde $attrs
je třeba title="ahoj"
.
- David Grudl
- Nette Core | 8227
Použil jsem nakonec implementaci, která jakoukoliv proměnnou uvnitř tagu při escapování obalí do uvozovek. Po zvážení všech okolností myslím, že to je nejvhodnější řešení.