PHP部分
$ids = array(1, 2, 3);
$texts = array('a', 'b', 'c');
$attributes = array('a1', 'b1', 'c1');
$smarty->assign('ids', $ids);
$smarty->assign('texts', $texts);
$smarty->assign('attributes', $attributes);
Tpl Part
<select name="test">
{html_options values=$ids output=$texts attribute=$attributes}
</select>
结果
<select name="test">
<option value="1">a</option>
<option value="2">b</option>
<option value="3">c</option>
</select>
我可以添加更多已定义的属性吗?
答案 0 :(得分:2)
可悲的是,没有这样的功能可用。您可以使用以下代码直接生成选项:
<select name="test">
{foreach $ids as $id}
<option value="{$id}" attribute="{$attributes[$id@index]}">{$texts[$id@index]}</option>
{/foreach}
</select>
或者,我建议制作一些更灵活的数据结构,例如:
$data = array( 1 => array('attr' => 'a1', 'text' => 'a'),
2 => array('attr' => 'a2', 'text' => 'b'),
3 => array('attr' => 'a3', 'text' => 'c') );
$smarty->assign('data', $data);
然后使用这样的代码
<select name="test">
{foreach $data as $item}
<option value="{$item@key}" attribute="{$item.attr}">{$item.text}</option>
{/foreach}
</select>
你应该添加一些转义到值或使用auto_escape到值,这只是一个基本的想法。