在 Smarty 模板中迭代多维关联数组
在使用 Smarty 的 PHP 应用程序中,我想将一个多维关联数组(其中包含描述项目和项目组的值)传递给模板并将其显示为列表。
我在 script.php 中做了类似的事情:
$data = array(
array(
'type' => 'group',
'name' => 'Group 1',
'items' => array(
array(
'type' => 'group',
'name' => 'Group 2',
'items' => array(
array(
'type' => 'item',
'name' => 'Item 1'
),
array(
'type' => 'item',
'name' => 'Item 2'
)
)
),
array(
'type' => 'item',
'name' => 'Item 3'
)
)
),
array(
'type' => 'item',
'name' => 'Item 4'
)
);
$smarty->assign('data', $data);
我在主模板文件中使用它:
{include file="display_data.tpl" data="$data"}
在 display_data.tpl 中:
{if $data.type eq 'item'}
<li>{$data.name} ({$data.type})</li>
{elseif $data.type eq 'group'}
<li>
{$data.name} ({$data.type})
{include file="display_data.tpl" data=$data.items}
</li>
{else}
<ol>
{foreach from=$data key=k item=i}
{include file="display_data.tpl" data=$data[$k]}
{/foreach}
</ol>
{/if}
但效果只是:
<ol>
<li>Group 1 (group)</li>
<li>Item 4 (item)</li>
</ol>
以任何方式我都无法让它迭代内部“items”数组。我做错了什么?
预先感谢您的任何帮助。
in a PHP application that uses Smarty I'd like to pass a multidimensional associative array with values describing items and groups of items to a template and display it as a list.
I do something like this in script.php:
$data = array(
array(
'type' => 'group',
'name' => 'Group 1',
'items' => array(
array(
'type' => 'group',
'name' => 'Group 2',
'items' => array(
array(
'type' => 'item',
'name' => 'Item 1'
),
array(
'type' => 'item',
'name' => 'Item 2'
)
)
),
array(
'type' => 'item',
'name' => 'Item 3'
)
)
),
array(
'type' => 'item',
'name' => 'Item 4'
)
);
$smarty->assign('data', $data);
And I'm using it in main template file:
{include file="display_data.tpl" data="$data"}
And in display_data.tpl:
{if $data.type eq 'item'}
<li>{$data.name} ({$data.type})</li>
{elseif $data.type eq 'group'}
<li>
{$data.name} ({$data.type})
{include file="display_data.tpl" data=$data.items}
</li>
{else}
<ol>
{foreach from=$data key=k item=i}
{include file="display_data.tpl" data=$data[$k]}
{/foreach}
</ol>
{/if}
But the effect is only:
<ol>
<li>Group 1 (group)</li>
<li>Item 4 (item)</li>
</ol>
In any way I cannot get it iterating over the internal 'items' array. What am I doing wrong?
Thanks in advance for any help.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
我认为“子”项目的标记应该是:
希望这可以进一步帮助您
I think the markup for 'sub' items should be:
Hopes this helps you further