我已經開始學習Smarty模板引擎,希望它能夠幫我做PHP內置模板的困難時間,但我遇到過類似的問題。PHP-Smarty模板 - 如何創建上下文無關模板
我們假設我想創建可重用的HTML代碼片段,例如手風琴菜單。我的模板看起來像:
Accordion.tpl:
<div class="Accordion">
{foreach from=$entries item=entry}
<div class="AccordionEntry">
<div class="AccordionTab">
{$entry.tab}
</div>
<div class="AccordionContent">
{$entry.content}
</div>
</div>
{/foreach}
</div>
此模板將檢索控制器部分分配變量 「條目」:
$smarty = new Smarty();
$smarty->assign('entries', [
['tab' => 'tab_00', 'content' => 'content_00'],
['tab' => 'tab_01', 'content' => 'content_01'],
['tab' => 'tab_02', 'content' => 'content_02']
]);
$smarty->display('Accordion.tpl');
這將正常工作。 但是,如果我想在多個地方重複使用此手風琴模板,該怎麼辦? 數據可分配是這樣的:
$smarty->assign('leftMenuEntries', [
['tab' => 'tab_00', 'content' => 'content_00'],
['tab' => 'tab_01', 'content' => 'content_01'],
['tab' => 'tab_02', 'content' => 'content_02']
]);
$smarty->assign('rightMenuEntries', [
['tab' => 'tab_00', 'content' => 'content_00'],
['tab' => 'tab_01', 'content' => 'content_01'],
['tab' => 'tab_02', 'content' => 'content_02']
]);
這裏是我的問題:模板「Accordion.tpl」永遠檢索變量「項」數據,但在這裏我用「leftMenuEntries」和「我rightMenuEntries「,所以顯然會失敗。由於兩個手風琴不一定具有相同的條目,我不得不將這些條目分配給兩個不同的變量。
我能做些什麼來使這項工作在一起嗎?
感謝您的幫助:)
謝謝我認爲這就是我一直在尋找的!我會在我回家時嘗試它。非常感謝您的幫助! – Virus721 2013-04-25 07:02:23