我已经开始学习 Smarty 模板引擎,希望它能让我用 PHP 内置模板做我很难做的事情,但我遇到了类似的问题。
假设我想创建可重用的 HTML 代码片段,例如手风琴菜单。我的模板看起来像:
手风琴.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”将始终从变量“entries”中检索数据,但这里我使用“leftMenuEntries”和“rightMenuEntries”,所以显然它会失败。由于两个手风琴不一定有相同的条目,我被迫将这些条目分配给两个不同的变量。
请问我该怎么做才能使这项工作一起工作?
谢谢你的帮助 :)