0

我在表格的每一行(100 行)中都有材料列表作为下拉列表。我想有选择地分配任何行选定的材料。

例如,假设为 $materialoptions 分配了一个数组 (1=>'Material 1', 2=>'Material 2',3=>'Material 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”

$smarty->assign("material_20",2); //Not able to do this
4

1 回答 1

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}
于 2014-06-08T14:41:32.903 回答