首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> 網頁程式設計 >> PHP 程式設計 >> PHP 相關知識

Smarty 內建 {literal}、{ldelim}/{rdelim} 實戰:JS/CSS 區塊防解析最佳實踐

     編輯:PHP 相關知識

Smarty 內建 {literal}、{ldelim}/{rdelim} 實戰:JS/CSS 區塊防解析最佳實踐

模板中嵌入 JavaScript/CSS 時,大括號 {} 與 Smarty 分隔符衝突,需用逃逸機制處理。

方案一:{ldelim}/{rdelim} 單點替換

<script language="javascript" type="text/javascript">

function myfunction(){ldelim}

alert("aaaaaa");

{rdelim}

</script>

<a href="#" onclick="javascript:myfunction()">aaaa</a>

{ldelim} → {,{rdelim} → }。適合少量大括號場景。

方案二:{literal}...{/literal} 區塊整體逃逸(推薦)

<script language="javascript" type="text/javascript">

{literal}

function myfunction(){

alert("aaaaaa");

}

{/literal}

</script>

<a href="#" onclick="javascript:myfunction()">aaaa</a>

區塊內容**完全按原樣輸出**,Smarty 不做任何解析。適合大段 JS/CSS/JSON 內嵌。

選型建議

場景推薦方案理由
內嵌完整 JS/CSS 檔案{literal}一次性逃逸全區塊,維護性最佳
模板中少量動態 JS 參數{ldelim}/{rdelim}保留模板變數插值能力
JSON 資料內嵌{literal}避免雙引號、冒號被誤解析

進階技巧

  • 若需在 {literal} 區塊中插入模板變數,可拆分區塊:{literal}...{/literal}{$var}{literal}...{/literal}
  • Smarty 3 可自訂分隔符 $smarty->left_delimiter = '{{',從根源避開衝突
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved