What is Smarty?
Why use it?
Use Cases and Work Flow
Syntax Comparison
Template Inheritance
Best Practices
Crash Course
You may use the Smarty logo according to the trademark notice.
For sponsorship, advertising, news or other inquiries, contact us at:
{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 | 关闭捕获区域的缓存 |
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}
.