mthaml处理我的php变量里面:javascript

时间:2013-07-18 21:50:41

标签: php javascript mthaml

我正在使用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。

1 个答案:

答案 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