在表格的下拉列表中分配变量值

时间:2014-06-08 10:56:14

标签: php smarty smarty2

我将材料列表作为每行表格中的下拉列表(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

1 个答案:

答案 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}