Smarty 图标

您可以根据 商标声明使用 Smarty 徽标。

Smarty Template Engine Smarty Template Engine

如需赞助、广告、新闻或其他咨询,请通过以下地址与我们联系

使用 Smarty 的网站

广告

{html_options}

{html_options} 是一个 自定义函数,它使用指定的数据创建 html <select><option> 组。它还会处理哪些项在默认情况下被选中。

属性名称 类型 是否需要 默认 描述
values 数组 是,除非使用 options 属性 n/a 用于下拉菜单的值数组
output 数组 是,除非使用 options 属性 n/a 用于下拉菜单的输出数组
selected 字符串/数组 empty 选定的选项元素
options 关联数组 是,除非使用 values 和 output n/a 值和输出的关联数组
name 字符串 empty 选择组名称
strict 布尔值 FALSE 将使“额外”属性 disabledreadonly 仅在提供布尔 TRUE 或字符串 “disabled”“readonly” 时才设置
  • 必需属性是 valuesoutput,除非您使用组合的 options

  • 如果给定了可选的 name 属性,则创建 <select></select> 标记,否则仅生成 <option> 列表。

  • 如果给定的值是数组,它将将其视为 html <optgroup> 并显示组。<optgroup> 支持递归。

  • 以上列表中不存在的所有参数都将以名称/值对的形式打印在 <select> 标记内。如果未给出可选的 name,则将忽略它们。

  • 所有输出都符合 XHTML 标准。

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


示例 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);
?>

  

上述数组将使用以下模板输出(请注意使用 php count() 函数作为修改器设置选择大小)。

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


  

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

  

示例 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}