smarty块名可以从smarty变量派生吗
Posted
技术标签:
【中文标题】smarty块名可以从smarty变量派生吗【英文标题】:Can smarty block names be derived from smarty variables 【发布时间】:2012-10-09 22:02:35 【问题描述】:我想根据 smarty 数据定义 smarty 块名称,但我似乎做不到。 示例:
foreach $array as $code
block name=block_$code
<div id='$code'></div>
/block
/foreach
我的目的是通过子模板扩展特定的 block_$code 块。这是可能的还是我可以使用其他技巧来做到这一点?
谢谢。
【问题讨论】:
【参考方案1】:您可以使用assign
块和cat
修饰符。例如
foreach $array as $code
assign var=foo value="block_"|cat:$code
block name=$foo
<div>
/block
/foreach
注意我没有对此进行测试,但它应该可以工作。您也可以将其短路并使用block name="block_"|cat:$code
。
【讨论】:
我试过了,它似乎无法识别变量中定义名称的块。 很奇怪。后一种形式呢? 不。要么它根本不创建块,要么块的名称不明显。我在想带有 block 定义元素的东西不允许任何动态值。我尝试做block name="block_"|cat:$code
之类的事情,但也没有用。
奇怪,assign 应该可以做到。恐怕我没有主意了。【参考方案2】:
我能够找到 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
【讨论】:
以上是关于smarty块名可以从smarty变量派生吗的主要内容,如果未能解决你的问题,请参考以下文章