使用 Smarty 模板的時候,通常都是用 ‘{’ 和 ‘}’ 作爲定界符(delimiter)。
有時,我們需要在 html 代碼裏輸出大括號,如果在模板裏直接寫出來,會被 Smarty 的解析器認爲是定界符,然後會報錯:
Smarty error : syntax error: unrecognized tag
無法識別的標籤!
如何解決呢?有 2 種辦法:
1:內置變量
ldelim, rdelim
ldelim and rdelim are used for displaying the literal delimiter, in our case “{” or “}”. The template engine always tries to interpret delimiters, so this is the way around that.
{ldelim} 和 {rdelim} 用於輸出分隔符,也就是大括號 ‘{’ 和 ‘}’。如果只是輸出很少的幾個大括號,請使用此方法。
2: 文本轉義
我們經常會在 html 裏寫 javascript 函數,就不可避免地寫大量的大括號,這個時候上面的解決方法就不適用了,Smarty 提供了一個轉義一段代碼的標籤:{literal}…{/literal}
{literal}
<script type="text/javascript">
function sayHello() {alert('Hello World!')}
</script>
{/literal}
這樣,就可以在裏面隨意寫各種符號,不必擔心 Smarty 引擎會錯誤解析了!