в приложении PHP, использующем Smarty, я хотел бы передать многомерный ассоциативный массив со значениями, описывающими элементы и группы элементов, в шаблон и отобразить его в виде списка.
Я делаю что-то подобное в 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'. Что я делаю не так?
Заранее спасибо за любую помощь.