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