0

我正在使用 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 变量是带引号的字符串,则引号最终会转换为 "。

4

1 回答 1

0

自动转义器不知道上下文(html、js 等)。不幸的是,您不能在#{}插值中禁用它。

您可以做的是将您的 php 变量公开为 html 数据属性:

#data(data-response=$data)
:javascript
    var response = $("#data").data("response");
    ...

或者,切换到 MtHaml/Twig 而不是 MtHaml/PHP。树枝自动逃生器更强大。

- autoescape true js
    :javascript
        if ("#{response}") { // response is escaped in javascript mode
于 2013-07-19T08:10:47.303 回答