配列からフォームを作成するためのテンプレートを作成しました。それは動的に名前を選択し、最後に取得した値から選択します。しかし、私は通常のphpのようにevalを書くことはできません
eval('$value = "\$smarty.get.'.$feature.name.'";');
私のテンプレートで
<div id="BMTProductsSearch" class="block">
<h4>Search</h4>
<form id="FBMTProductsSearch" action="{$link->getPageLink('search.php', true)}" method="get">
<ul>
{foreach from=$features item=feature}
<li>
<label for="{$feature.name}">{$feature.name}</label>
<select name="{$feature.name}">
<option value="">-- {$feature.name} --</option>
{foreach from=$feature.options item=option}
{eval var='$value = "\$smarty.get.'.$feature.name.'";' assign="value"}
<option value="'{$option.value}'">{$option.value} {$value}</option>
{/foreach}
</select>
</li>
{/foreach}
<li>
<label for="search_query_block">{l s='product name' mod='BMTProductsSearch'}</label>
<input class="search_query" type="text" id="search_query_block" name="search_query" value="{if isset($smarty.get.search_query)}{$smarty.get.search_query|htmlentities:$ENT_QUOTES:'utf-8'|stripslashes}{/if}">
</li>
<li>
<input type="hidden" name="orderby" value="position">
<input type="hidden" name="orderway" value="desc">
<input type="submit" id="search_button" class="button_mini" value="{l s='go' mod='BMTProductsSearch'}">
</li>
</ul>
</form>
</div>