1

我想根据 smarty 数据定义 smarty 块名称,但我似乎做不到。
例子:

{foreach $array as $code}
  {block name=block_$code}
     <div id='{$code}'></div>
  {/block}
{/foreach}

我的目的是通过子模板扩展特定的 block_$code 块。这是可能的还是我可以使用其他一些技巧来做到这一点?

谢谢。

4

2 回答 2

0

您可以使用{assign}块和cat修饰符。例如

{foreach $array as $code}
    {assign var=foo value="block_"|cat:$code}
    {block name=$foo}
        <div>
    {/block}
{/foreach}

注意我没有测试过这个,但它应该可以工作。您也可以将其短路并仅使用{block name="block_"|cat:$code}.

于 2012-10-09T22:36:00.180 回答
0

我能够找到 2011 年的以下链接,表明当时这是不可能的。我怀疑它仍然不是:

http://www.smarty.net/forums/viewtopic.php?t=19805&highlight=block%20variable%20name

好消息是我能够弄清楚如何在没有它的情况下使我的代码工作。我希望能够仅覆盖由 foreach 定义的 div 之一。我可以这样做:

家长:

{foreach $array as $code}
    {block name=code_loop}
        <div>Normal Stuff</div>
    {/block}
{/foreach}

孩子:

{block name=code_loop}
    {if $code == 'code of interest'}
        <div>New Stuff</div>
    {else}
        {$smarty.block.parent}
    {/if}
{/block}
于 2012-10-12T14:08:04.770 回答