PHP:
<?php
$menu = array(
array('label' => 'myLabel', 'submenu' =>
array('label' => 'test label',
'label' => 'test label',
'label' => 'test label'
)),
array(...)
);
$smarty->assign(array('menu' => $menu));
TPL:
<ul>
{foreach from=$menu key=k item=elem}
<li>
<div>
{$elem.label}
</div>
<ul>
{foreach from=$elem.submenu item=subelem}
<li>{$subelem.label}</li>
{/foreach}
</ul>
</li>
{/foreach}
</ul>
请注意,像$menu = array(array("A"), array("B"), array("C"));
这样的数组运行正常。
我哪里错了?是否有可能或聪明无法做到?
编辑:问题是:这输出第一个列表,并在正确的html上下文中输出子列表的第一个元素的第一个字母。
答案 0 :(得分:3)
内在的foreach就是问题所在。内部foreach中的项(subelem)不是数组(如您所想),但它是一个字符串。
这应该有效:
<ul>
{foreach from=$menu key=k item=elem}
<li>
<div>
{$elem.label}
</div>
<ul>
{foreach from=$elem.submenu key=label item=text_label}
<li>{$text_label}</li>
{/foreach}
</ul>
</li>
{/foreach}
</ul>