1

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部分

<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>

我可以添加更多定义的属性吗?

4

1 回答 1

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,这只是一个基本想法。

于 2013-12-28T16:58:01.307 回答