smarty学习笔记三 常用内建方法

PHP内建方法
{$var=...}
该方法是{assign}的简写模式,用来直接在模版中定义一个变量。
属性:
scope: parent\root\global
支持nocache

{append}
在调用模版的过程中向模版变量中创建一个数组变量,或者向一个已知的数组变量中追加元素,支持nocache标签
属性:
var 变量名
value 变量值
index 插入的变量在数组中的下标索引,如果没指定该值,则默认添加在数组的最后
scope 访问权限
支持nocache标签

{assign}
作用与{$var=...}相同
属性
var 定义的变量名
value 定义的变量值
scope 访问权限
支持nocache标签

{call}
用来调用在模版中使用{function}标签定义的方法。该方法必须含有name属性,同时也可以将变量以属性的方式传递给调用的方法中
属性:
name 要调用的模版方法命
assign 将调用模版方法后返回来的值存储到assign定义的变量中,而不是直接输出返回值
[var...]向模版方法中传递变量以供方法使用
支持nocache标签

{capture}
用来收集出现在{capture name='foo'}与{/capture}块之间的内容,并将其内保存到名字为foo的capture块标签中,如果未指明name属性,缺省default。可以使用$smarty.capture.foo来访问保存的内容。该标签不可被嵌套使用。
属性:
name capture块标签名
assign 若指定该属性,将捕获的内容赋值到给定变量中
append 用来将捕获的内容追加到指定的数组中去
支持nocache标签

{config_load}
用来获取配置文件中的变量信息
属性:
file 要读取的配置文件名
section 读取配置文件中指定片段
scope 权限分配

{debug}
弹出调试控制页面。该设置不会受到在php脚本中对debug设置的影响。

{extends}
该标签用在子模版中,用来指明所要继承的父模版。
该标签必须在子模版的第一行中出现
如果子模板用{extends}标签继承父模板,那么它只能包含{block}标签(内容),其它任何模板内容都将忽略; 
使用此语法为模板资源继承$template_dir目录外的文件。 
属性:
file 要被继承的模版名

{for}
{for}{forelse}标签用来进行简单的循环,它支持下面两种格式的用法:
{for $var=$start to $end} 步长为1
{for $var=$start to $end step $step} 指定步长
但循环为空时执行{forelse}
属性:
max 限制最大的循环次数
支持nocache标签

{foreach},{foreachelse}
用来对一个数组数据进行简单的循环,格式有:
{foreach $array as $val}
{foreach $array as $key=>$val}
当循环的内容为空时执行{foreachelse}语句
{foreach}具有下列属性:@index, @iteration, @first, @last, @show, @total。
支持{break}和{continue}

{function}
用于在模版内部创建模版函数,调用方法与插件调用类似。
注意:模版函数是全局的,如果要调用外部模版的模版函数,必须使用{call}标签,调用自己模版的模版函数则可以直接使用{functionname}形式来调用。

{if},{elseif},{else}
与php中类似,只是必须用{/if}进行结束标志。所有PHP条件函数和方法都可使用(is_array())。

{include}
用于将其它模版引入到当前模版中,当前模板中的任何有效变量在被包含模板中同样可用。 
必须指定file属性,该属性指明模板资源的位置。 
设置assign属性选项可以指定{include}的输出贮存分配给哪个模板变量,而不显示内容,类似于{assign}。 
变量可以作为属性参数传递给被包含模板,任何明确传递给被包含模板的变量只在被包含文件的作用域中有效。如果传递的属性变量在当前模板中有同名变量,那么传递的属性变量将覆盖当前模板变量。 
被包含模板内部可以使用主模板的所有变量,但在被包含模板里面改变或新建的变量只有本地作用域,使用{include}语句后这些变量在主模板内部将不可见;有两种方法可以改变这种默认行为(变量作用域):在{include}语句中使用scope属性对被包含模板的所有赋值变量有效,或在{assign}语句中使用scope属性改变个别变量作用域。后一特性在从被包含模板返回值给主模板时非常有用。 
包含$template_dir文件夹之外的模板请使用模板资源语法。
支持nocache、caching、cache_lifetime标签
inline标签:设置该项,将会被包含文件编译到包含文件中(很有用)

{include_php} {insert}不赞成使用

{ldelim},{rdelim}
输出smarty的左右标签。

{nocache}
必须与{/nocache}成对出现。用来禁用模版中的某个片段进行缓存。即出现在该块中的内容不会被缓存

{section},{sectionelse}
对连续的数值下标索引的数组进行循环。无法对值索引数组进行循环,建议使用{foreach}

{setfilter}
必须与{/setfilter}标签成对出现。出现在该块标签内的所有变量都会进行过滤
语法:{setfilter filter1|filter2|filter3....}...{/setfilter}
该标签可以被嵌套使用,内嵌的标签过滤器会覆盖上层的过滤器

{while}
与PHP的while语句类似。所有PHP条件函数和方法都可使用(is_array())。
PHP技术交流群 170855791

原文地址:https://www.cnblogs.com/gbyukg/p/2506648.html