Присвоение значения переменной в выпадающем списке в таблице

У меня есть список материалов в раскрывающемся списке в каждой строке таблицы (100 строк). Я хочу выборочно назначить любой строке выбранный материал.

Например, предположим, что $materialoptions назначен массив (1=> "Материал 1", 2=> "Материал 2",3=> "Материал 3"). Это список выпадающих в каждой строке.

Я хочу назначить в php, скажем, в строке 20 выбран материал "Материал 2".

Ниже моя реализация. Не в состоянии назначить правильно. HTML/Smarty Code

<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

1 ответ

Решение

Вы должны изменить в своем файле шаблона

{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}
Другие вопросы по тегам