0

使用 smarty 时,它提供了一些有用@properties的循环键,例如@first @last@iteration

但似乎在看起来像的循环中

{foreach $collection as $item}
    {include file="something_else.tpl"}
{/foreach}

我们似乎失去了@properties.

如果我想访问这些属性,有没有比将所有属性传递给包含文件更优雅的方法?

{foreach $collection as $item}
    {include file="something_else.tpl" first=$item@first last=$item@last iter...}
{/foreach}
4

2 回答 2

1

只要您使用@properties循环内部,它们就会被计算并在包含的文件中可用:

{foreach $collection as $item}
    {if $item@first || $item@last || $item@iteration}{/if} {* Force @properties to be calculated so they can be used in included files *}
    {include file="something_else.tpl"}
{/foreach}

似乎@properties必须在模板逻辑中使用 don't 事件,但如果它们在注释中就足够了。然后,您可以避免if在编译的模板文件中出现空条件。以下目前有效,但我不确定它是否是有意的。

{foreach $collection as $item}
    {* $item@first $item@last $item@iteration Force @properties to be calculated so they can be used in included files *}
    {include file="something_else.tpl"}
{/foreach}
于 2018-01-17T11:11:00.907 回答
0

基本上没有。但也许您可以使用混合语法。您向 foreach 添加一个名称并尝试通过 {$smarty.foreach.name.property} 访问其属性。

http://www.smarty.net/docs/en/language.variables.smarty.tpl (搜索 $smarty.foreach。)

于 2013-10-06T13:58:28.113 回答