{capture}
{capture}
可以捕获标记范围内的输出内容,存到变量中而不显示。 任何在{capture name='foo'}
和 {/capture}
之间的内容都会被捕获到变量,变量名可以通过name
属性来指定。
捕获的内容可以通过$smarty.capture.foo
变量来使用,这里foo是设置的name
属性。如果没有提供name
属性,默认是“default”,也就是$smarty.capture.default
.
{capture}
可以被嵌套使用。
属性:
参数名称 | 类型 | 必选参数 | 默认值 | 说明 |
---|---|---|---|---|
name | string | Yes | n/a | 捕获区域的名称 |
assign | string | No | n/a | 捕获内容后赋值的变量名 |
append | string | No | n/a | 将捕获的内容增加到数组中 |
可选标记:
名称 | 说明 |
---|---|
nocache | 关闭捕获区域的缓存 |
警告
当捕获{insert}
输出的时候请小心。 如果开启了$caching
并且 你希望通过{insert}
在缓存的页面上显示动态内容,那么你无法捕获这些内容。
Example 7.21. {capture}使用name属性
- {* we don't want to print a div tag unless content is displayed *}
- {capture name="banner"}
- {capture "banner"} {* short-hand *}
- {include file="get_banner.tpl"}
- {/capture}
- {if $smarty.capture.banner ne ""}
- <div id="banner">{$smarty.capture.banner}</div>
- {/if}
Example 7.22. {capture} 捕获内容到变量
下面是capture函数的演示
- {capture name=some_content assign=popText}
- {capture some_content assign=popText} {* short-hand *}
- The server is {$my_server_name|upper} at {$my_server_addr}<br>
- Your ip is {$my_ip}.
- {/capture}
- <a href="#">{$popText}</a>
Example 7.23. {capture} 捕获内容到数组变量
下面例子演示了如何多次捕获内容,形成数组。
- {capture append="foo"}hello{/capture}I say just {capture append="foo"}world{/capture}
- {foreach $foo as $text}{$text} {/foreach}
输出:
- I say just hello world
参见 $smarty.capture
, {eval}
, {fetch}
, fetch()
和 {assign}
.
原文: https://www.smarty.net/docs/zh_CN/language.function.capture.tpl