Php 模板中的智能评估
我制作了从数组创建表单的模板。它可以动态选择名称并按上次获取的值进行选择。但我不能像普通php那样编写evalPhp 模板中的智能评估,php,smarty,eval,Php,Smarty,Eval,我制作了从数组创建表单的模板。它可以动态选择名称并按上次获取的值进行选择。但我不能像普通php那样编写eval eval('$value = "\$smarty.get.'.$feature.name.'";'); 在我的模板中 <div id="BMTProductsSearch" class="block"> <h4>Search</h4> <form id="FBMTProductsSearch" action="{$link->getPa
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>
在这种情况下,您应该简单地使用assign,而不是以这种方式求值:
{assign var=value value= $smarty.get[$feature.name]}
然后在选项中使用$value。您也无法创建此变量,而是:
<option value="'{$option.value}'">{$option.value} {$value}</option>
您可以使用:
<option value="'{$option.value}'">{$option.value} {$smarty.get[$feature.name]}</option>
eval几乎从来都不是一个好主意。为什么不为此制作一个智能函数呢?