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

一、条件判断语句:

基本句式:

{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"}





  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
好的,我了解了。关于Smarty模板引擎的学习笔记,以下是一些基本知识和使用方法: 1. 简介 Smarty是一个模板引擎,可以将PHP代码和HTML代码分离,使得设计师和开发人员可以分开工作,从而提高开发效率。Smarty可以很方便地实现循环、条件判断、变量赋值、函数调用等操作。 2. 基本语法 Smarty语法与HTML类似,它使用大括号{}包围变量或表达式。例如: ``` {$name} // 输出变量$name的值 {if $age > 18} 成年人 {else} 未成年人 {/if} // 条件判断语句 ``` 3. 变量赋值 在Smarty中,可以使用赋值符号将一个值赋给一个变量。例如: ``` {$name = 'Tom'} // 将字符串'Tom'赋给变量$name ``` 4. 循环语句 Smarty提供了多种循环语句,如for循环、foreach循环等。例如: ``` {for $i=1 to 10} {$i} {/for} // 输出1到10的数字 {foreach $array as $value} {$value} {/foreach} // 遍历数组$array的每个元素并输出 ``` 5. 条件判断语句 Smarty条件判断语句与PHP类似,包括if语句、elseif语句、else语句。例如: ``` {if $age > 18} 成年人 {elseif $age > 12} 青少年 {else} 儿童 {/if} // 输出不同的结果,根据变量$age的值 ``` 6. 函数调用 Smarty支持调用PHP函数和自定义函数。例如: ``` {$time = time()} // 调用time()函数,将当前时间赋给变量$time {function hello($name)} Hello {$name}! {/function} // 定义一个名为hello的函数,接受一个参数$name,输出一句问候语 ``` 7. 模板继承 Smarty支持模板继承,可以方便地实现页面布局的重用。例如: ``` {extends file="layout.tpl"} // 继承名为layout.tpl的模板 {block name="content"} // 子模板中的内容 {/block} // 定义一个名为content的块,用于替换父模板中的相应块 ``` 以上是一些基本的Smarty语法和使用方法。希望对你有所帮助。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值