smarty的内置函数有哪些

 我来答
windblast
2013-01-01 · 知道合伙人软件行家
windblast
知道合伙人软件行家
采纳数:5633 获赞数:13622
毕业于空军第一航空学院电子专业,1991年开始接触电脑,从事多年计算机编程,具有较丰富的经验。

向TA提问 私信TA
展开全部
Smarty自带了一些内置函数。 这些内置函数是Smarty模板引擎的组成部分。 它们会被编译到PHP代码中,以取得最高的性能。你不能建立相同名称的自定义函数; 同时你也不需要修改这些内置函数。少数的内置函数有assign属性, 可以将函数的结果赋值给模板变量,而不是输出; 效果如同 {assign}函数。
参见
● {$var=...}
{assign}函数的缩写。你可以在模板内对变量进行赋值,或者对数组元素进行赋值。
● {append}
{append}可以在运行时为数组变量增加或者创建值。
● {assign}
{assign}用于在模板运行期间赋值给变量。
● {block}
{block}可在模板上定义一块区域,以进行模板继承。
● {call}
{call}可以调用一个通过 {function} 标签来定义的模板函数,如同调用插件函数一样。
● {capture}
{capture}可以捕获标记范围内的输出内容,存到变量中而不显示。
● {config_load}
{config_load}用于从配置文件中 加载配置变量#variables#。
● {debug}
{debug}会在页面上显示调试控制台。
● {extends}
模板继承中,你可以在子模板内使用{extends}标签来扩展父模板。
● {for}
{for}{forelse}用于创建一个简单的循环。
● {foreach},{foreachelse}
{foreach}用于循环数组。{foreach}的语法比{section}循环要更简单和清晰,并且可以使用非数字下标的数组。
@index
index是当前数组索引,从0开始计算。
@iteration
iteration是当前循环的次数,和index不同,iteration是从1开始。iteration在每次循环的时候都会加一。
@first
当循环{foreach}是首次循环时,first将为TRUE。
@last
当{foreach}循环到了最后一次时,last将为TRUE。
@show
show属性是在{foreach}循环执行之后,检测循环是否显示数据的判断。show是一个布尔值。
@total
total是整个{foreach}循环的次数。 total可以在{foreach}内部,或者之后使用。
{break}
{break}停止循环。
{continue}
{continue}将跳过当前本次循环并进入下一次循环。
● {function}
{function}用于在模板内创建函数,这些函数可以像插件函数一样调用。 用这个方式来代替写插件来显示内容,更具有可管理性。这也可以简化数据的复杂度,如多层结构的菜单。
● {if},{elseif},{else}
Smarty的{if}条件判断和PHP的if 非常相似,只是增加了一些特性。每个{if}必须有一个配对的{/if}. 也可以使用{else} 和 {elseif}. 全部的PHP条件表达式和函数都可以在if内使用,如||, or, &&, and, is_array(), 等等。
● {include}
{include}用于载入其他模板到当前模板中。 在包含模板中可用的变量,载入后在当前模板仍然可用。
● {include_php}
重要提示:{include_php}是废弃的函数,用注册插件的方式来将程序代码和显示分离,是更好的选择。在Smarty 3.1,{include_php}仅在SmartyBC中可用。
● {insert}
重要提示:{insert}是废弃的函数,不应该再使用。将你的PHP逻辑放到PHP脚本中或者通过插件来代替。
● {ldelim},{rdelim}
{ldelim}和{rdelim}用于避免解析模板定界符,默认是 { and }。同时你也可以用{literal}{/literal}来避免解析区域的字符,如javascript或者css。
● {literal}
{literal}可以让一个模板区域的字符原样输出。这经常用于保护页面上的Javascript或css样式表,避免因为Smarty的定界符{语法}而错被解析。在{literal}{/literal}内的任何标签都不会被解析,原样输出。所以如果你有需要放到{literal}内的标签,首先可以考虑是否用{ldelim}{rdelim}来代替定界符在页面上的显示(不用{literal})。
● {nocache}
{nocache}用于关闭模板区块的缓存。{nocache}都必须和一个{/nocache}匹配。
● {php}
重要说明:Smarty已经废弃{php}标签,强烈建议不要使用。请把你的PHP逻辑放到PHP程序或者插件函数中实现。
● {section},{sectionelse}
{section}可以循环遍历连续数字索引的数组, 区别于{foreach}可以循环任意关联数组. 每个{section}标签都必须有一个匹配的{/section}关闭标签。
.index
index是当前数组的索引值,从0开始,或者从设定的start值开始。它将每次循环增加1或者增加指定的step值。
.index_prev
index_prev上一次循环的索引值。在第一次循环的时候,它是-1.
.index_next
index_next是下一次循环的索引值。在最后一次循环时,它会比当前索引加1,或者加上指定的step属性值。
.iteration
iteration是当前的循环次数,从1开始。
.first
如果当前的循环是第一次,first将被设成TRUE。
.last
如果当前的循环是最后一次,那么last将为TRUE。
.rownum
rownum是当前循环的次数,从1开始。它是iteration 的别名。
.loop
loop是最后一次{section}循环的下标。它可以在{section}循环中或者循环后使用。
.show
show是一个布尔值参数。如果设置为FALSE,section将不会被显示。如果有{sectionelse}显示,它们将被交替显示。
.total
total是{section}的总数。 它可以在{section}循环中或者循环后使用。
● {setfilter}
{setfilter}...{/setfilter}块标签可以使用模板定义的变量过滤器。
● {strip}
很多时候,页面设计师会遇到模板上的空格和回车影响到页面输出HTML的情况(浏览器“特性”),所以你可以把你的标签都放到一起,以取得想要的结果。但这很容易最终导致模板无法阅读和管理。
任何在{strip}{/strip}中的标签都会被过滤掉多余的空格和回车, 并把全部标签放在同一行内显示。这样你的模板还是可读的,而且也不需要担心多余的空格问题。
● {while}
Smarty的{while}循环和PHP的while 在灵活性方面是几乎一样的,只是增加了少许特性。 每个{while}必须有相应的{/while}. 任何的PHP条件或者函数表达式都是可用的,如||, or, &&, and, is_array(), 等等。
下面是可用的运算符列表,使用中都会放到元素的中间并且用空格分隔。 注意列表中[方括号]的是可选的,而且还会列出对应PHP的表达式。
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式