Присвоение значения переменной в выпадающем списке в таблице
У меня есть список материалов в раскрывающемся списке в каждой строке таблицы (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}