Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/257.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 模板中的智能评估_Php_Smarty_Eval - Fatal编程技术网

Php 模板中的智能评估

Php 模板中的智能评估,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

我制作了从数组创建表单的模板。它可以动态选择名称并按上次获取的值进行选择。但我不能像普通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>

在这种情况下,您应该简单地使用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几乎从来都不是一个好主意。为什么不为此制作一个智能函数呢?