传递的值可以是字符串,数组也能是对象。
当变量是字符串时,{$变量名}表示输出变量。
当变量是数组时,输出变量的方式有两种,分别为:
a.{$arr.key}
b.{$arr['key']}
当是一个对象时,可以直接通过obj->method(),调用对象的方法
条件判断
条件判断的基本句式如下:
{if $variable 条件修饰符 value1}
//some
{elseif $variable 条件修饰符 value2}
//some
{else}
//some
{/if}
基本的条件修饰符有:eq(等于),neq(不等于),gt(大于),lt(小于),lte(小于等于),gte(大于等于)。修饰符前后要有空格
循环
Smarty中有两种循环,分别是foreach,section,for和while
section循环
section不能循环遍历关联数组,它只能循环遍历连续数字下标的数组,如果要循环关联数组使用foreach
section可以接受name,loop,step,start,max,show,其中name和loop是必须的。name是每一次循环得到的下标,loop是垚循环的值,step循环的步长,默认为1,max是最大循环的次数,start开始循环的下标,默认为0,如果start为负数,就从数组末尾开始循环,show表示是否显示循环的内容,默认是true
如下:
在test文件夹下创建section.php文件,内容如下:
<?php
require ('config.php');
$article = array(
array(
'title'=>'第一章',
'name'=>'QxQstar',
'content'=>'Smarty section循环第一章'
),
array(
'title'=>'第二章',
'name'=>'QxQstar',
'content'=>'Smarty section循环第二章'
)
);
$smarty->assign('article',$article);
$smarty->display('section.tpl');
?>
在tpl文件夹下创建section.tpl文件,内容如下:
<ul>
{section name=item loop=$article}
<li>
{$article[item].title}
<p>作者:{$article[item].name}</p>
<p>内容:{$article[item].content}</p>
</li>
{sectionelse}
没有文章
{/section}
</ul>
foreach循环
foreach循环比section循环要简单,foreach的语法与php中foreach的语法很像,foreach可以做到任何section做到的功能,并且foreach更简单
{foreach $arrayvar as $itemvar}
{foreach $arrayvar as $keyvar=>$itemvar}
例子如下:
在test文件夹中创建foreach.php文件,文件内容如下:
<?php
require ('config.php');
$articles = array(
array(
'title'=>'第一章',
'name'=>'QxQstar',
'content'=>'Smarty foreach循环第一章'
),
array(
'title'=>'第二章',
'name'=>'QxQstar',
'content'=>'Smarty foreach循环第二章'
)
);
$smarty->assign('articles',$articles);
$smarty->display('foreach.tpl');
?>
在tpl文件夹中创建foreach.tpl文件,内容如下:







