Pro/Contra Smarty
bearbeitet von
@@Gunnar Bittersmann
> in Smarty
>
> ~~~Smarty, good
> <output>{$answer|escape}</output>
> ~~~
Warum muss man das eigentlich tun? Warum escapet Smarty nicht schon von Haus aus?
Template-Engines werden ja verwerdet, um Daten ins HTML zu schreiben; nicht um HTML-Tags zu generieren. Es gibt zwar Fälle, wo man nicht unbedingt escapen muss (wenn bspw. `$anwser` das Ergebnis einer numerischen Berechnung ist); mir will aber kein Fall einfallen, wo man nicht escapen darf.
Warum wird `{$answer}`{:.language-smarty} nicht gleich in `htmlspecialchars($answer)`{:.language-php} übersetzt?
Und jetzt, wo ich die Frage einmal aufgeschrieben habe, fällt mir auch die Antwort ein: 42.
Genauer: Der Einsatz von Template-Engines ist nicht auf Generierung von HTML beschränkt. Es könnten auch JavaScript- oder CSS-Ressourcen per Template-Engine generiert werden. In dem Fall wäre `htmlspecialchars()`{:.language-php} falsch und [andere Filter](https://www.smarty.net/docsv2/de/language.modifier.escape.tpl) angesagt.
LLAP 🖖
--
*„Wer durch Wissen und Erfahrung der Klügere ist, der sollte nicht nachgeben. Und nicht aufgeben.“* —Kurt Weidemann