Context-aware escaping bug?
- Filip Procházka
- Moderator | 4668
Souhlasím, že je lepší použít třídy, protože HTML je na obsah, né na styly. Na druhou stranu, Latte by to mohlo umět.
Založil jsem za vás issue ;)
Editoval HosipLan (7. 2. 2012 18:26)
- Keksa
- Člen | 23
Jop, pomocí {!$data[color]} sem to vyřešil taky, šlo mi jenom o to, aby se případně opravil bug v Nette. Css třídu bohužel použít nemůžu, protože je to do chatové aplikace, kde si každý uživatel může nastavit barvu, aby se lépe odlišoval od ostatních. Takže bych musel udělat css třídy pro veškeré barvy a to je vážně kravina. Nejspíš by to šlo nějak udělat například pomocí nějakého generovaného css souboru, ale to už mi přijde zbytečně krkolomné.
- Keksa
- Člen | 23
uestla napsal(a):
Stejně mám pocit, že to není bug, jen to špatně chápeme…
Jsme v kontextu CSS, kde má
#
speciální význam. Když to chcem vypsat natvrdo, jak to je, použijem vykřičník… Čili je to stejný mechanismus, jako když v HTML kontextu vypisujem HTML uložené v proměnné, nebo ne?
Jenže pokud styl zapisuju přímo pro daný element pomocí atributu „style“, tak pokud vím ‚#‘ speciální význam nemá.
- David Grudl
- Nette Core | 8228
To je dobrá otázka, co má v CSS speciální význam.
Odpověď je tady. Nicméně CSS má řadu různých kontextů a je
otázka, co se od escapování očekává. Nette volí tu nejpřísnější
cestu. To znamená, že mohu mít $id='a#b';
obsahující mřížku
a
<span id='{$id}'> a na něj se odkazovat ve `<style> $id { ... }</style>
.