随笔-31  评论-257  文章-0  trackbacks-0
Smarty 的表现逻辑

      第一编文章中,只简单的讲述了Smarty里的基本原理,也就传几个变量的值而已,而本节中,将会讲述Smarty的逻辑表示结构,比如它的分支,修饰符,迭代等结构的表达。

     (1) 注释:

      中Smarty中,也可以使用注释,设计人员可以用注释在模板页面中传递一些说明信息等。在Smarty中的注释为:{* Hello Jiang! *},大家可以看到,Smarty中的注释是用{**}来包围的,可以单行,也可以多行,比如可以这样写:
      {* Hello
           Jiang! *}

     (2)变量修饰符:

      在Smarty中,可以为变量添加修饰符,用于对变量进行一些Smarty已定义好的操作,变量修饰符的写法是:
      {$var|modifier}
其中,$var 是变量,modifier 是修饰符的单词,意为对指定变量进行某种修饰操作。

      1、capitalize 修饰符
      capitalize 修饰符用于对变量内的值中所有单词的首字母变为大写,可看示例:
      $smarty = new Smarty;
      $smarty->assign("$title","hello jiang zone");
      $smarty->display("index.tpl");

index.tpl 内容为:
      {$title|capitalize}

      2、count_words
      count_words 函数统计变量中的单词总数

      3、date_format
      date_format 函数是PHP strftime() 函数的包装器,它能将可以被strftime()解析的任何日期/时间格式字符串转换为某种特殊格式。

      4、default
      default 函数当应用层没有返回值时,default为指示特定变量的默认值提供了一种简单的方式。

      5、strip_tags
      strip_tags 函数删除变量字符串中的标签符号。如:
      $smarty->assign("name","<b>Jiang</b>");
      模板里这样写:{$name|strip_tags}
      会输入如下name的值:"Jiang",它将<b></b>删除了。所以,没有输出粗体

      6、truncate
      truncate 函数将变量字符串截取为指定数量的字符。]


      (3)控制结构

      1、if-elseif-else
      Smarty 的if语句与PHP语言中的if语句相同,与PHP一样,可以使用一些条件限定符如下:
      eq            gt            gte            ge
      lt              lte            le              ne
      neq          is even     is not even   is odd
      is not odd  div by     event by    not
      mod         odd by      ==            !=
      >              <              <=            >=
示例:
      {if $var > 5}
          <p>Hello JiangZone</p>
      {/if}

      2、foreach
      foreach 标记的作用与PHP语句中的命令相同。但如下所示,其语法大不相同。它有4个参数,其中两个是必要的:
      form : 这个必要参数指定目标数组的名。
      item : 这个必要参数指定当前元素的名。
      key : 这个可选参数指定当前键的名。
      name : 这个可选参数指定节的名。这个名是任意的,应当设置为一个描述性的名字。
看看如下例子:
require("Smarty.class.php");
$smarty = new Smarty;
$daysofweek = array("Mon","Tues","Weds","Thu","Fri","Sat","Sun");     
$smarty->assign("daysofweek",$daysofweek);
$smarty->display("daysofweek.tpl");     

以下是daysofweek.tpl模板文件:
{foreach from=$daysofweek item=$day}
      {$day}<br />
{/foreach}

      3、foreachelse
      foreachelse 标记与 foreach 一起使用,与用于字符串的 default 标记作用类似,数组为空时 foreachelse 标记可以生成某个候选结果。以下是一个使用 foreachelse 的模板示例:
{foreach key=key item=item from=$titles}
      {$key}: {$item}<br />
{foreachelse}
      <p>No states matching your query were found.</p>
{/foreach}
注意,foreachelse 不使用结束括号:它嵌入到foreach中,这与elseif嵌入到if语句中很类似。


      (4)语句
      Smarty 提供了几个用于完成特殊任务的语句。
      1、include
      include语句与PHP包中的同名语句相同,只是它只用于将其它模板导入到当前模板。例如,假设希望在Smarty模板中导入两个文件,header.tpl 和 footer.tpl ,可以如下完成:
{include file="header.tpl"}
{include file="footer.tpl"}

      2、insert
      insert 标记与 include 标记的功能相同,只是它要导入不会被缓存的数据。例如,可以使用这个函数插入经常更新的数据,如股票价格,天气预报或其它在很短时间内就要改变的内容。它也接受几个参数,一个是必要的,另外三个是可选的:
      name : 这个必要参数确定insert函数的名。
      assign : 这个可选参数可用于将输出给变量,而不是直接发送到输出。
      script : 这个可选参数可以指向在导入文件前直接执行的一个PHP脚本。当输出文件的内容依赖于脚本所完成的某个特定动作时,可以使用此参数。例如,可以执行一个PHP脚本,返回某个默认的股票价格放在不可缓存的输出中。
      var : 这个可选参数用于传入所有插入模板使用的其它参数。可以通过这种方式传递很多参数。

      3、literal
      literal 标记告诉Smarty :标记中嵌入的任何数据都应当原样输出,不需要转换。这个标记量常用于在模板中嵌入JavaScript 和CSS ,从而不需要担心与 Smarty 的定界符冲突。

      4、php
      可以使用php函数在模板中嵌入PHP代码。{php}{/php}标记中的任何代码都由PHP引擎处理。
posted on 2008-07-29 13:49 姜大叔 阅读(384) 评论(0)  编辑  收藏 所属分类: PHP

只有注册用户登录后才能发表评论。


网站导航: