Get Smarty

Donate

Smarty Icon

You may use the Smarty logo according to the trademark notice.

Smarty Template Engine Smarty Template Engine

For sponsorship, advertising, news or other inquiries, contact us at:

Sites Using Smarty

Buy cheap glasses from Cheapglasses123.com and save up to 80%.

Where to buy prescription glasses? EyewearCanada.com is your best choice!

Advertisement

{html_options}

{html_options}是一个自定义函数, 可以使用提供的数据,生成HTML的<select><option>标签,还可以设置选中项等属性。

参数名称 类型 必选参数 默认值 说明
values array Yes, 除非使用 options 属性 n/a 下拉框值的数组
output array Yes, 除非使用 options 属性 n/a 下拉框显示的数组
selected string/array No empty 选中的项
options 数组 Yes, 除非使用 values 和 output n/a 键值对的数组,用于下拉框
name string No empty select组的名称
  • 必要的属性是valuesoutput, 除非你使用组合的options来代替。

  • 除非提供了可选属性name, 才会创建 <select></select>标签, 不然,只会生成<option>列表。

  • 如果设置的值是数组,会当作HTML的<optgroup>,并且显示该下拉组。 <optgroup>是支持递归的。

  • 其他不在上面列表中的键值对参数,会直接在输出的 <select> 标签中显示成 名称=值 的属性。 如果可选参数name没有设置,那么它们将被忽略。

  • 全部的输出都符合XHTML的。

Example 8.9. 使用options属性


<?php
$smarty->assign('myOptions', array(
                                1800 => 'Joe Schmoe',
                                9904 => 'Jack Smith',
                                2003 => 'Charlie Brown')
                                );
$smarty->assign('mySelect', 9904);
?>

  

下面模板将生成一个下拉列表。 注意name提供了值,所以会生成 <select>标签。


{html_options name=foo options=$myOptions selected=$mySelect}

  

输出:


<select name="foo">
<option value="1800">Joe Schmoe</option>
<option value="9904" selected="selected">Jack Smith</option>
<option value="2003">Charlie Brown</option>
</select>


Example 8.10. 分开赋值valuesouptut


<?php
$smarty->assign('cust_ids', array(56,92,13));
$smarty->assign('cust_names', array(
                              'Joe Schmoe',
                              'Jane Johnson',
                              'Charlie Brown'));
$smarty->assign('customer_id', 92);
?>

  

上面的两个数组,将会如下输出HTML (注意这里有使用了PHP的 count()函数作为修饰器来计算size值).


<select name="customer_id" size="{$cust_names|@count}">
   {html_options values=$cust_ids output=$cust_names selected=$customer_id}
</select>

  

输出:


<select name="customer_id" size="3">
    <option value="56">Joe Schmoe</option>
    <option value="92" selected="selected">Jane Johnson</option>
    <option value="13">Charlie Brown</option>
</select>


  

Example 8.11. 数据库例子(如 ADODB 或 PEAR)


<?php

$sql = 'select type_id, types from contact_types order by type';
$smarty->assign('contact_types',$db->getAssoc($sql));

$sql = 'select contact_id, name, email, contact_type_id
        from contacts where contact_id='.$contact_id;
$smarty->assign('contact',$db->getRow($sql));

?>

下面是模板,注意使用了 truncate 修饰器。


<select name="type_id">
    <option value='null'>-- none --</option>
    {html_options options=$contact_types|truncate:20 selected=$contact.type_id}
</select>

  

Example 8.12. <optgroup> 下拉组


<?php
$arr['Sport'] = array(6 => 'Golf', 9 => 'Cricket',7 => 'Swim');
$arr['Rest']  = array(3 => 'Sauna',1 => 'Massage');
$smarty->assign('lookups', $arr);
$smarty->assign('fav', 7);
?>

  

而模板里:


{html_options name=foo options=$lookups selected=$fav}

  

输出:


<select name="foo">
<optgroup label="Sport">
<option value="6">Golf</option>
<option value="9">Cricket</option>
<option value="7" selected="selected">Swim</option>
</optgroup>
<optgroup label="Rest">
<option value="3">Sauna</option>
<option value="1">Massage</option>
</optgroup>
</select>


参见 {html_checkboxes}{html_radios}

Comments
No comments for this page.

Advertisement