smarty难道只能{$var}输出变量,而不能在模板进行一些判断或者循环之类的吗,类似tp3的模板引擎一样。答案是当然可以
if文档:https://www.smarty.net/docs/zh_CN/language.function.if.tpl#id436306
Smarty的{if}
条件判断和PHP的if非常相似,只是增加了一些特性。 每个{if}
必须有一个配对的{/if}
. 也可以使用{else}
和 {elseif}
来个例子:根据地址栏传过来的today值,来判断是星期几
{if $smarty.get.today == null}
空
{elseif $smarty.get.today eq 0 || $smarty.get.today eq 7}
周日时间
{elseif $smarty.get.today eq 6}
周六时间
{else}
周一到周五工作时间
{/if}
for文档:https://www.smarty.net/docs/zh_CN/language.function.for.tpl
foreach文档:https://www.smarty.net/docs/zh_CN/language.function.foreach.tpl
while文档:https://www.smarty.net/docs/zh_CN/language.function.while.tpl
{for}{forelse}用于创建一个简单的循环。 下面的几种方式都是支持的:
{for $var=$start to $end}步长1的简单循环。
{for $var=$start to $end step $step}指定步长的循环。
$i@iteration |
显示的是当前循环的执行次数 |
$i@total |
显示的是循环执行的总次数 |
举个例子
//每三个一排循环输出
$smarty->assign('start',1);
$smarty->assign('end',9);
1到9 每三个换行
{for $i=$start to $end}
{$i}
{if $i%3 == 0}
{/if}
{/for}
本次循环了{$i@total}次
打印1到100的奇数 利用幅度来控制 然后每5个换行
$i@total 显示的是循环执行的总次数
$i@iteration 显示的是当前循环的执行次数
{for $i=$start to 100 step 2}
{$i}
{if $i@iteration %5 == 0 }
{/if}
{/for}
本次循环了{$i@total}次
在项目中,常常使用foreach来进行循环数组进行输出
{foreach from=$source key=key item=item}
from是来自那个变量
然后遍历整个数组,把键和值取出来
分别赋值给key item
因此在循环过程中key item的值不断变化
{/foreach}
$i@first |
布尔值是否是第一次循环 |
$i@last |
布尔值是否是最后一次循环 |
$arr = array(
0=>array('name'=>'张飞','age'=>20),
1=>array('name'=>'张飞','age'=>20),
2=>array('name'=>'张飞','age'=>20),
3=>array('name'=>'张飞','age'=>20),
);
$smarty->assign('arr',$arr);
{foreach from=$arr key=k item=v}
{if $v@first}
{$v['name']}
{$v['age']}
{elseif $v@last}
{$v['name']}
{$v['age']}
{else}
{$v['name']}
{$v['age']}
{/if}
{/foreach}
$smarty->assign('age',10);
{while $age < 18 }
{$age++}岁
{/while}
变量修饰器文档:https://www.smarty.net/docs/zh_CN/language.modifiers.tpl
可以用于变量, 自定义函数或者字符串。 使用修饰器,需要在变量的后面加上|(竖线)并且跟着修饰器名称。 修饰器可能还会有附加的参数以便达到效果。 参数会跟着修饰器名称,用:(冒号)分开。
$smarty->assign('time',time());//时间戳
$smarty->assign('str','This My is Name :Tacks!!!');
$smarty->assign('hobby','I like play basketball');
变量修饰器本质就是一个函数:
修饰器可以作用于任何类型的变量,数组或者对象。
将变量作为函数的参数来进行格式化后显示在页面中
当前时间
{$time|date_format:"%Y-%m-%d %H:%M:%S"}
下面一句话
{$str}
upper全部大写
{$str|upper}
lower全部小写
{$str|lower}
一句话 + 爱好
{$str|cat:"and ,$hobby"}
这写模板里面的判断,循环,变量修饰器,的使用,就也体现了,业务与显示的分离,php去获取数据处理数据,然后扔给页面,具体判断可以直接在页面里面进行,也是比较方便,但是模板里面最好不要做太多的负责的运算或者处理,保证后台的数据原始。