2013-07-18 47 views
0

我正在使用MTHAML的PHP​​端口,它使用完全相同的語法。我怎麼能告訴MTHAML當我使用它們裏面mthaml處理我的php變量裏面:javascript

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變量是帶引號的字符串,則引號最終會被轉換爲&。

回答

0

自動助手不知道上下文(html,js等)。不幸的是,你不能在#{}插值中禁用它。

有些事情,你可以做的是暴露你的PHP變量作爲HTML數據屬性:

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

另外,切換到MtHaml /枝條,而不是MtHaml/PHP。枝條自動助手更強大。

- autoescape true js 
    :javascript 
     if ("#{response}") { // response is escaped in javascript mode