我将材料列表作为每行表格中的下拉列表(100行)。 我想有选择地分配任何选定的行材料。
例如,假设为$ materialoptions分配了一个数组(1 =>'材料1',2 =>'材料2',3 =>'材料3')。这是每行下拉列表。
我想在php中分配说,在第20行,所选材料是'材料2'。
以下是我的实施。无法正确分配。 HTML / Smarty代码
<form name='materialsel' id='materialsel' method='POST' action=''>
<table>
{section name=counter start=1 loop=100 step=1}
<tr>
<td><SELECT name="materialid_{$smarty.section.counter.index}" id="materialid_{$smarty.section.counter.index}" onchange='return document.forms.materialsel.submit();'><option value='0'>Select Material</option>
{html_options selected=$material_$smarty.section.counter.index options=$materialoptions}
</SELECT>
</td>
</tr>
{/section}
</table>
</form>
PHP代码
$smarty->assign("materialoptions", array (1=>'Material 1', 2=>'Material 2',3=>'Material 3'));
//在第20行中,所选材料为“材质2&#39;
”$smarty->assign("material_20",2); //Not able to do this
答案 0 :(得分:0)
您应该更改模板文件
{html_options selected=$material_$smarty.section.counter.index options=$materialoptions}
到
{html_options selected=${"material_{$smarty.section.counter.index}"} options=$materialoptions}
但在这种情况下,您应该定义所有material_1,material_2等变量,因为您将它们用于创建选项
**编辑**
你没有在Smarty 2中提到过你需要它.Smarty 2不支持变量变量,因此你应该重新考虑使用其他方法来实现这一点。
在PHP而不是
$smarty->assign("material_20",2);
你应该这样分配变量:
$selections = array( '20' => 2);
$smarty->assign("selections", $selections);
在模板文件中,您应该更改
{html_options selected=$material_$smarty.section.counter.index options=$materialoptions}
到
{html_options selected=$selections[$smarty.section.counter.index] options=$materialoptions}