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" は常に変数 "entries" からデータを取得しますが、ここでは "leftMenuEntries" と "rightMenuEntries" を使用しているため、明らかに失敗します。2 つのアコーディオンが必ずしも同じエントリを持つとは限らないため、これらのエントリを 2 つの異なる変数に割り当てる必要があります。
これを一緒に機能させるにはどうすればよいですか?
ご協力いただきありがとうございます :)