smarty模板中标签的输出方式

smarty模板中的标签有以下输出方式:

① 原样输出,即&标签名

② 标签参与数学运算(不推荐,模板只保持输出就行了)

{$age+30}

老头的真实年龄是{$age},他找老婆的最适合年龄是{$age-$sub}岁

{30+$age} 这种写法在smarty2.6里,是不支持的,即运算的时候,$标签要放在最前面
建议不要这样写,为了兼容就版本的smarty

③ 标签可以进行 if else  判断(从分工角度看,模板不应用负责逻辑判断,有时,在模板上,进行逻辑判断,可以极大的简化工作,比如:会员普通会员,VIP会员,在页面右上角,显示不同的提)

从地址栏上传值,判断是星期几? 如果是0,7,则为周日,如果是6,则为周六,其余则为工作日

{if $smarty.get.today == 0 || $smarty.get.today == 7} 今天是周日 {else if $smarty.get.today == 6} 今天是周六 {else} 今天是工作日,上班去吧 {/if}

④ 标签可以用于控制循环语句

    for  ,  while(smarty3新增)  ,  foreach  ,  section

$smarty->assign('start',1);
$smarty->assign('end',10);
接下来打印,1到100之间的所有奇数:
            常规想法:是用%2 == 1 ,来判断并打印
            但是我们可以利用for循环的'步长'属性来控制
            步长即,由小到大过程中,每一步的增长"幅度",
            1,3,5,7,这就每一步递增2
        

{for $i=$start to 100 step 2} {$i}  {if $i@iteration % 3 == 0}
{/if} {/for}

$i@iteration表示当前循环单元,是整体循环体中的第几次循环

    用@first控制首行
    @first是1个布尔值,当第一次循环时,其值为真,否则其值为假
    @last也是一个布尔值,当此次循环的次数等于总循环次数的时候,其值为真,否则其值为假
    
{foreach $goods as $k=>$g} {/foreach}
序号商品名商品价格
{$g@iteration}{$g.goods_name}{$g.shop_price}

foreach循环还有smarty2的经典写法,如下:

{literal}
    foreach循环数组的典型写法
    {foreach from=$source key=$key $item=$item}
    {/foreach}

    如何来理解foreach呢?
    答:from是来自的意思,即,循环$source这个变量

    从头到尾,挨个的把$source的每个单元的"键"和"值"拿出来
    分别赋给 $key,$item

    因此,循环过程中,$key,$item的值,不断变化,直到循环结果


{/literal}
section写法:

{literal}

    

section

    一般section这么写{section loop=$source name=g}
    loop是待循环的数组

    name=g,代表每一次循环,g=0 1 2 3  ....
    
    如果数组也是标签的索引数组,恰好就是数组的每一个键

    因此手册上说,section用于循环从0开始的索引数组

    显示时,$smarty[g].键名
    
{/literal}

布尔商场商品列表

{section loop=$goods name=g} {/section}
序号商品名商品价格
{$goods[g].goods_id}{$goods[g].goods_name}{$goods[g].shop_price}
“注”:{foreach}可以做到{section}做到的功能,而且更简单更清晰的语法。一般更推荐使用{foreach}语法


⑤ 变量调节器,通过变量调节器,来对变量的值进行微调,比如:把时间戳微调成 日期

     变量调节器的本质是一个函数
     这个函数,以标签对应的变量值为参数,然后运算,把返回值,显示在标签处

     如:{$g.add_time}返回的是一个时间戳
     微调成日期
     {$g.add_time|date_format:"%Y-%m-$d %H:%M:%S"}
     变成年月日 时:分:秒这种格式

{$poem|upper}

{$poem|lower}

{$poem|upper|lower}





你可能感兴趣的:(Smarty)