我正在使用MTHAML的PHP端口,它使用完全相同的语法。当我在
中使用变量时,如何告诉MTHAML不要触摸我的变量https://github.com/arnaud-lb/MtHaml
例如这个
:javascript
if (#{$response)} !== "") {
show_error("#{$response}");
}
转换为此
<script type="text/javascript">
//<![CDATA[
if (<?php echo htmlspecialchars(escape("$response"),ENT_QUOTES,'UTF-8'); ?> !== "") {
show_error("<?php echo htmlspecialchars($response,ENT_QUOTES,'UTF-8'); ?>");
}
//]]>
</script>
所以我的PHP布尔变量在渲染的javascript中显示为空白,或者如果我的php变量是带引号的字符串,则引号最终被转换为&amp; quot。
答案 0 :(得分:0)
自动转义器不知道上下文(html,js等)。不幸的是,您无法在#{}
插值中禁用它。
你可以做的就是将你的php变量暴露为html数据属性:
#data(data-response=$data)
:javascript
var response = $("#data").data("response");
...
或者,切换到MtHaml / Twig而不是MtHaml / PHP。 Twig auto escaper更强大。
- autoescape true js
:javascript
if ("#{response}") { // response is escaped in javascript mode