Smarty 图标

您可以根据 商标声明 使用 Smarty 徽标。

Smarty Template Engine Smarty Template Engine

有关赞助、广告、新闻或其他咨询,请通过以下方式联系我们

使用 Smarty 的网站

广告

转义 Smarty 解析

有时,希望或甚至有必要让 Smarty 忽略它在其他情况下可能会解析的区域。一个经典的示例是将 JavaScript 或 CSS 代码嵌入在模板中。出现问题的原因是这些语言使用 { 和 } 字符,而这些字符也是 Smarty 的默认 分隔符

注意

避免转义的良好做法是将 JavaScript/CSS 分别存储在它们自己的文件中,并使用标准 HTML 方法来访问它们。这还将利用浏览器脚本缓存。当您需要将 Smarty 变量/函数嵌入到 JavaScript/CSS 中时,则适用以下内容。

在 Smarty 模板中,只要 { 和 } 大括号被空格包围,它们将被忽略。可以通过将 Smarty 类变量 $auto_literal 设置为 false 来禁用此行为。

示例 3.8 使用自动文本功能

<script>
   // the following braces are ignored by Smarty
   // since they are surrounded by whitespace
   function foobar {
	alert('foobar!');
   }
   // this one will need literal escapement
   {literal}
	function bazzy {alert('foobar!');}
   {/literal}
</script>
  
 

{literal}..{/literal} 块用于转义模板逻辑块。您还可以使用 {ldelim}{rdelim} 标记或 {$smarty.ldelim},{$smarty.rdelim} 变量单独转义这些大括号。

Smarty 的默认分隔符 { 和 } 明确地表示展示内容。但是,如果另一组分隔符更适合您的需求,您可以使用 Smarty 的 $left_delimiter $right_delimiter 值来更改它们。

注意

更改分隔符会影响所有模板语法和转义。如果您决定更改它们,请务必清除缓存和已编译文件。

示例 3.9 更改分隔符示例

<?php

$smarty->left_delimiter = '<!--{';
$smarty->right_delimiter = '}-->';

$smarty->assign('foo', 'bar');
$smarty->assign('name', 'Albert');
$smarty->display('example.tpl');

?>

  

在此模板中

Welcome <!--{$name}--> to Smarty
<script language="javascript">
  var foo = <!--{$foo}-->;
  function dosomething() {
    alert("foo is " + foo);
  }
  dosomething();
</script>