在包含文件中访问smarty loop属性?

时间:2013-08-15 23:42:29

标签: php properties foreach include smarty

使用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}

2 个答案:

答案 0 :(得分:0)

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

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

答案 1 :(得分:0)

只要您在循环中使用@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不事件,但如果它们在注释中就足够了。然后,您可以避免在已编译的模板文件中出现空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}