您的位置:首页 > 其它

Smarty学习笔记——条件判断语句、循环语句和文件引用

2016-03-30 09:24 447 查看

一、条件判断语句:

基本句式:

{if $name eq "Mary"}
Welcome Mary.
{elseif $name eq "Jack"}
Welcome Jack.
{else}
Welcome everybody.
{/if}


其中eq是条件修饰符,在Smarty中,还有其他条件修饰符:eq(==)、neq(!=)、gt(>)、lt(<)等。

注意:条件修饰符必须用空格与变量和常量分开。

二、循环语句:

1.section:

test.php(省略了$smarty对象的实例化和Smarty文件的引用)

<?php
$arr = array(
array(
"title"=>"第一篇",
"content"=>"内容",
"author"=>"作者"),
array(
"title"=>"第一篇",
"content"=>"内容",
"author"=>"作者")
);
$smarty->assign("arr", $arr);
$smarty->display("test.tpl");
?>
test.tpl(模板文件)

{section name=article loop=$arr}
{$arr["article"].title}
{$arr["article"].content}
{$arr["article"].author}
<br />
{/section}
如果当前没有数据,可以使用{sectionelse}

section中的属性:

name:(必选) 是section循环的名称只是标示循环唯一的名字没有特别意义,前面没有$符号;

loop: (必选)是在php声明中的变量名称,用来标示是循环哪一个数组(即要循环数组名)需要使用$;

start: (可选)循环执行的初始位置. 如果该值为负数,开始位置从数组的尾部算起. 例如:如果数组中有7个元素,指定start为-2,那么指向当前数组的索引为5. 非法值(超过了循环数组的下限)将被自动调整为最接近的合法值.

step: (可选)如其它语言的循环,是一个步长,如果为负数,则倒序循环;

max:(可选)循环的最大下标,如果是1则只循环1次,如果为2则循环2次;

show:(可选)默认为true即显示。如果设置了{sectionelse}。表示如果数组没有内容的时候显示这部分的内容;如果show为false则显示这部分。如果没有设置{sectionelse}则不输出该数组。

2.foreach:(可以使用PHP的语法使用)

test.tpl

{foreach item=$article from=$arr}
{$article.title}
{$article.content}
{$article.author}
<br />
{foreachelse}
当前没有文章
{/foreach}


如果当前没有数据,可以使用{foreachelse}。

也可以像PHP语法一样使用foreach。

test.tpl

{foreach $arr as $article}
{$article.title}
{$article.content}
{$article.author}
<br />
{foreachelse}
当前没有文章
{/foreach}


三、文件引用:

在Smarty语法中,引入函数只有include一个。

属性类型是否必须缺省值描述
filestringYesn/a待包含的模板文件名
assignstringNon/a该属性指定一个变量保存待包含模板的输出
[var ...][var type]Non/a传递给待包含模板的本地参数,只在待包含模板中有效
Include 标签用于在当前模板中包含其它模板.。当前模板中的变量在被包含的模板中可用.。必须指定 file 属性,该属性指明模板资源的位置。如果设置了 assign 属性,该属性对应的变量名用于保存待包含模板的输出,这样待包含模板的输出就不会直接显示了。

可以在属性中传递参数给待包含模板.。传递给待包含模板的参数只在待包含模板中可见。 如果传递的参数在待包含模板中有同名变量,那么该变量被传递的参数替代。

包含 $template_dir 文件夹之外的模板请使用 模板资源 说明的格式。

使用外部模板资源的include函数演示:

{* absolute filepath *}
{include file="/usr/local/include/templates/header.tpl"}

{* absolute filepath (same thing) *}
{include file="file:/usr/local/include/templates/header.tpl"}

{* windows absolute filepath (MUST use "file:" prefix) *}
{include file="file:C:/www/pub/templates/header.tpl"}

{* include from template resource named "db" *}
{include file="db:header.tpl"}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息