PHP模板学习--Smarty 内置函数
2014-05-06 22:07
357 查看
{$var=...} {assign}函数的缩写。你可以在模板内对变量进行赋值,或者对数组元素进行赋值。
{append} 可以在 运行时 为数组变量增加或者创建值。
参数:1.赋值的变量名称var 2.值value 3.元素的新索引index,如果不指定,则默认加到数组末尾
4.变量的访问范围:'parent'(包含它的模板可见),'root'(相关模板可见) 或 'global'(全部模板可见)。格式:scope="global"。
{assign} 用于在模板运行期间赋值给变量。参数:要赋值的变量 2.值 3.变量作用范围 还可以指定属性:不缓存变量 nocache。
在PHP脚本中获取模板内的变量:$smarty->getTemplateVars('foo');注意,必须在模板被显示(display)后才能获取到模板内的变量,否则为空null。
{block}{/block} 可在模板上定义一块区域,以进行模板继承。子模板中的{block}区域代码,将会替换父模板对应的区域代码。
在子模板的{block}中定义 append 或 prepend,可以使子模板附加在父模板 {block}区域的后面或前面。
在{block}内容中使用{$smarty.block.parent},可以获得父模板的区域代码。{block}可以嵌套使用。
可选属性(仅在子模板中使用):append、prepend、hide、nocache。必须指定模板名称。
在父模板中{block}标签内可以通过{$smarty.block.child}来获得子模板中的内容,同样,在子模板中可以通过{$smarty.block.parent}获取父模板内容。
如果在子模板中不指定{block}append还是prepend,默认覆盖父模板中对应{block}{/block}中的内容。
{call} 可以调用一个通过 {function} 标签来定义的模板函数,如同调用插件函数一样。也可以直接使用{functionname ...}的方式来使用函数。
属性:1.name模板函数的名称 2.assign将函数的返回内容赋值到指定变量 3.传递给模板函数的参数。
{capture}{/capture} 可以捕获标记范围内的输出内容,存到变量中而不显示。 任何在{capture name='foo'} 和 {/capture} 之间的内容都会被捕获到变量,
变量名可以通过name属性来指定。{capture}可以被嵌套使用。使用name捕获内容到$smarty.capture数组中,而assign则捕获到变量中。
参数:1.name捕获区域的名称 2.assign捕获内容后赋值的变量名 3.append将捕获的内容增加到数组中 4.nocache
{config_load} 从配置文件中加载配置变量#variables#。注意,载入时配置文件中的全局变量也会被同时载入
参数:1.file文件名 2.section载入配置变量的段落 3.配置变量的作用范围,取值local, parent 或 global.
{debug} 会在页面上显示调试控制台。 它将忽略PHP代码中的debug配置。 在它执行的过程中,仅可以显示赋值变量。
然而,你可以看到模板范围内全部可用的变量。如果开启了缓存,而{debug}在缓存的页面中执行,那么它仅会显示从缓存 文件中赋值到模板的变量。
{extends} 继承模板。属性:file,指定要继承的模板名称。
{for}{forelse} {/for} 用于创建一个简单的循环。{for $var=$start to $end}步长1的简单循环。属性:max,指定循环的最大次数。@total为循环总次数
{for $var=$start to $end step $step}指定步长的循环。{forelse}在循环不能遍历的时候执行。
{foreach},{foreachelse} 用于循环数组。属性:@index 是当前数组索引,从0开始计算。
@iteration 是当前循环的次数,和index不同,iteration是从1开始。 iteration在每次循环的时候都会加一。
iteration几个用法: is div by num 判断被num整除 is even/odd by num 被num除后为偶数/奇数
@first 首次循环时为真。
@last 最后一次循环时为真。
@show show属性是在{foreach}循环执行之后, 检测循环是否显示数据的判断。 show是一个布尔值。
@total total是整个{foreach}循环的次数。 total可以在{foreach}内部,或者之后使用。
{break}/{continue} 用于循环,作用与PHP的break和continue语句一样。
{function name args=value}{/function} 在模板内定义一个函数,调用时使用{name args=value}的格式调用。
{if}{else}{elseif}{else} 与PHP的if、elseif、else一样,所有的PHP函数和表达式在{if}{/if}之间都有效。
如果开启了安全机制,则只有$php_functions设置允许的PHP函数才能使用。
{include} 将其他模板载入到当前模板中。被载入模板的变量仍然可用。主要属性:file文件来源、assign将内容赋值给变量而不是输出。
{include_php} 载入php文件到模板。默认情况下载入时该php文件会被执行一次。此函数已废弃。
{ldelim}{rdelim} 避免解析模板定界符,也可以使用{literal}{/literal}。
{literal}{/literal} 在{literal}{/literal}之间的任何内容将不被解析,保持原样输出。
{nocache}{/nocache} 用于关闭一个模块区域的缓存。
{section}{/section} 可以循环遍历连续数字索引的数组, 区别于{foreach} 可以循环任意关联数组。参数:name、loop、start、step、max、show
属性:index,
index_prev, index_next,
iteration, first, last,
rownum, loop,
show, total.
{setfilter}...{/setfilter} 可以使用模板定义的变量过滤器。
{strip}{/strip} {strip}{/strip}的标签都会被过滤掉多余的空格和回车, 并把全部标签放在同一行内显示。
{while}{/while} 与PHP中的while几乎无异,任何的PHP表达式和函数在while标签内都是可用的。
下面仅为格式示例:
{$user.name.first="Bob"}
{$users[]="Bob"}
{append var='name' value='Meyer' index='last'}
{assign var=foo value="bar" scope="global"}
{assign "foo" "bar" scope="global" nocache} 简写方式
{block}格式:
父模板:
<title>{block "title"}Default Title{/block}</title>
子模板:
{extends file="parent.tpl"} {block name="title"}Page Title{/block}
之后display子模板即可。
{call}格式:
{call name=menu data=$menu}
{call menu data=$menu} 简写方式
{foreach $items as $item}
{$item.name}<hr/>
{if $item@last}
<div id="total">
{$item@total} items
</div>
{/if}
{foreachelse}
... no items to loop ...
{/foreach}
{nocache}
{$smarty.now|date_format}
{/nocache}
{append} 可以在 运行时 为数组变量增加或者创建值。
参数:1.赋值的变量名称var 2.值value 3.元素的新索引index,如果不指定,则默认加到数组末尾
4.变量的访问范围:'parent'(包含它的模板可见),'root'(相关模板可见) 或 'global'(全部模板可见)。格式:scope="global"。
{assign} 用于在模板运行期间赋值给变量。参数:要赋值的变量 2.值 3.变量作用范围 还可以指定属性:不缓存变量 nocache。
在PHP脚本中获取模板内的变量:$smarty->getTemplateVars('foo');注意,必须在模板被显示(display)后才能获取到模板内的变量,否则为空null。
{block}{/block} 可在模板上定义一块区域,以进行模板继承。子模板中的{block}区域代码,将会替换父模板对应的区域代码。
在子模板的{block}中定义 append 或 prepend,可以使子模板附加在父模板 {block}区域的后面或前面。
在{block}内容中使用{$smarty.block.parent},可以获得父模板的区域代码。{block}可以嵌套使用。
可选属性(仅在子模板中使用):append、prepend、hide、nocache。必须指定模板名称。
在父模板中{block}标签内可以通过{$smarty.block.child}来获得子模板中的内容,同样,在子模板中可以通过{$smarty.block.parent}获取父模板内容。
如果在子模板中不指定{block}append还是prepend,默认覆盖父模板中对应{block}{/block}中的内容。
{call} 可以调用一个通过 {function} 标签来定义的模板函数,如同调用插件函数一样。也可以直接使用{functionname ...}的方式来使用函数。
属性:1.name模板函数的名称 2.assign将函数的返回内容赋值到指定变量 3.传递给模板函数的参数。
{capture}{/capture} 可以捕获标记范围内的输出内容,存到变量中而不显示。 任何在{capture name='foo'} 和 {/capture} 之间的内容都会被捕获到变量,
变量名可以通过name属性来指定。{capture}可以被嵌套使用。使用name捕获内容到$smarty.capture数组中,而assign则捕获到变量中。
参数:1.name捕获区域的名称 2.assign捕获内容后赋值的变量名 3.append将捕获的内容增加到数组中 4.nocache
{config_load} 从配置文件中加载配置变量#variables#。注意,载入时配置文件中的全局变量也会被同时载入
参数:1.file文件名 2.section载入配置变量的段落 3.配置变量的作用范围,取值local, parent 或 global.
{debug} 会在页面上显示调试控制台。 它将忽略PHP代码中的debug配置。 在它执行的过程中,仅可以显示赋值变量。
然而,你可以看到模板范围内全部可用的变量。如果开启了缓存,而{debug}在缓存的页面中执行,那么它仅会显示从缓存 文件中赋值到模板的变量。
{extends} 继承模板。属性:file,指定要继承的模板名称。
{for}{forelse} {/for} 用于创建一个简单的循环。{for $var=$start to $end}步长1的简单循环。属性:max,指定循环的最大次数。@total为循环总次数
{for $var=$start to $end step $step}指定步长的循环。{forelse}在循环不能遍历的时候执行。
{foreach},{foreachelse} 用于循环数组。属性:@index 是当前数组索引,从0开始计算。
@iteration 是当前循环的次数,和index不同,iteration是从1开始。 iteration在每次循环的时候都会加一。
iteration几个用法: is div by num 判断被num整除 is even/odd by num 被num除后为偶数/奇数
@first 首次循环时为真。
@last 最后一次循环时为真。
@show show属性是在{foreach}循环执行之后, 检测循环是否显示数据的判断。 show是一个布尔值。
@total total是整个{foreach}循环的次数。 total可以在{foreach}内部,或者之后使用。
{break}/{continue} 用于循环,作用与PHP的break和continue语句一样。
{function name args=value}{/function} 在模板内定义一个函数,调用时使用{name args=value}的格式调用。
{if}{else}{elseif}{else} 与PHP的if、elseif、else一样,所有的PHP函数和表达式在{if}{/if}之间都有效。
如果开启了安全机制,则只有$php_functions设置允许的PHP函数才能使用。
{include} 将其他模板载入到当前模板中。被载入模板的变量仍然可用。主要属性:file文件来源、assign将内容赋值给变量而不是输出。
{include_php} 载入php文件到模板。默认情况下载入时该php文件会被执行一次。此函数已废弃。
{ldelim}{rdelim} 避免解析模板定界符,也可以使用{literal}{/literal}。
{literal}{/literal} 在{literal}{/literal}之间的任何内容将不被解析,保持原样输出。
{nocache}{/nocache} 用于关闭一个模块区域的缓存。
{section}{/section} 可以循环遍历连续数字索引的数组, 区别于{foreach} 可以循环任意关联数组。参数:name、loop、start、step、max、show
属性:index,
index_prev, index_next,
iteration, first, last,
rownum, loop,
show, total.
{setfilter}...{/setfilter} 可以使用模板定义的变量过滤器。
{strip}{/strip} {strip}{/strip}的标签都会被过滤掉多余的空格和回车, 并把全部标签放在同一行内显示。
{while}{/while} 与PHP中的while几乎无异,任何的PHP表达式和函数在while标签内都是可用的。
下面仅为格式示例:
{$user.name.first="Bob"}
{$users[]="Bob"}
{append var='name' value='Meyer' index='last'}
{assign var=foo value="bar" scope="global"}
{assign "foo" "bar" scope="global" nocache} 简写方式
{block}格式:
父模板:
<title>{block "title"}Default Title{/block}</title>
子模板:
{extends file="parent.tpl"} {block name="title"}Page Title{/block}
之后display子模板即可。
{call}格式:
{call name=menu data=$menu}
{call menu data=$menu} 简写方式
{foreach $items as $item}
{$item.name}<hr/>
{if $item@last}
<div id="total">
{$item@total} items
</div>
{/if}
{foreachelse}
... no items to loop ...
{/foreach}
{nocache}
{$smarty.now|date_format}
{/nocache}
相关文章推荐
- PHP模板学习--Smarty 自定义函数
- 对比JAVA学习PHP系列:高级:PHP的模板引擎Smarty
- php学习笔记(三十五)smarty模板中使用变量的三种方式
- php学习系列2---smarty模板
- php学习笔记(四十)smarty3的模板继承新特性
- PHP学习笔记----smarty模板
- PHP模板Smarty 初级学习 重点是:配置项的说明
- PHP之谈(四)——smarty模板的学习
- 我的php学习笔记(二十六)PHP模板引擎Smarty内置函数
- PHP模板学习--Smarty 字符串 变量修饰器
- PHP Smarty模板
- php:smarty模板的使用
- PHP学习 smarty的更多函数
- 在smarty模板中调用PHP自定义函数(从smarty2到smarty3)
- php用Smarty模板生成html文件
- PHP smarty学习
- 【PHP web 2.0 开发实践】2.9 Smarty 模板引擎
- PHP中使用Smarty模板目录结构配置
- php用Smarty模板生成html文件
- C++基础学习系列--2、递归思想,内置函数,函数重载,函数模板,带默认值函数