1
Smarty를 사용하는 PHP 응용 프로그램에서 항목 및 항목 그룹을 설명하는 값이있는 다차원 연관 배열을 템플릿에 전달하고이를 목록으로 표시하고 싶습니다.Smarty의 다차원 연관 배열 반복 템플릿
$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);
그리고 주요 템플릿 파일을 사용하고 있습니다 :
나는이 script.php에서 같은 것을 할
{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>
어떤 식 으로든 내부 '항목'배열을 반복 처리 할 수 없습니다. 내가 도대체 뭘 잘못하고있는 겁니까?
미리 도움을 청하십시오.
감사를하는 데 도움이됩니다. 이 방법은 문제의 주어진 예제에서와 같이 항목 트리의 최대 깊이를 알고있는 경우 작동합니다. 그러나 실제로 무엇을하려고했으나 작동시키지 못했습니다. 트리의 깊이를 처리하는 것이 었습니다. 이것이 재귀 템플릿을 사용하는 이유입니다. 이 문제에 대한 아이디어가 있습니까? – user485332