Get Smarty

Donate

Paypal

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

Advertisement

{html_options}

{html_options} は、HTML の <select><option> グループにデータを代入して作成する カスタム関数 です。 デフォルトで選択されるアイテムも決定できます。

属性名 必須 デフォルト 概要
values array Yes (options属性を用いない場合) n/a ドロップダウンリストのvalue属性の配列
output array Yes (options属性を用いない場合) n/a ドロップダウンリストの出力内容の配列
selected string/array No empty あらかじめ選択されているオプション要素
options associative array Yes (valuesとoutput属性を用いない場合) n/a キーがvalues属性、要素がoutput属性の連想配列
name string No empty selectグループの名前
  • options を使用しない場合は、 values および output が必須となります。

  • 任意である name 属性が与えられると、 <select></select> タグが作成されます。 それ以外の場合は <option> のリストのみを作成します。

  • 配列が渡された場合は HTML の <optgroup> として扱われ、グループが表示されます。 <optgroup> での再帰呼出もサポートしています。

  • 前述の属性リストに無いパラメータが与えられた場合は、 作成された各 <select> タグの内側に 名前/値 のペアで表されます。任意の name 属性が与えられない場合には、これらは無視されます。

  • すべての出力は XHTML に準拠しています。

Example 8.12. 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 label="Joe Schmoe" value="1800">Joe Schmoe</option>
<option label="Jack Smith" value="9904" selected="selected">Jack Smith</option>
<option label="Charlie Brown" value="2003">Charlie Brown</option>
</select>


Example 8.13. 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 の大きさを設定していることに注意しましょう)。


<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 label="Joe Schmoe" value="56">Joe Schmoe</option>
    <option label="Jack Smith" value="92" selected="selected">Jane Johnson</option>
    <option label="Charlie Brown" value="13">Charlie Brown</option>
</select>


  

Example 8.14. データベース (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.15. <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 label="Golf" value="6">Golf</option>
<option label="Cricket" value="9">Cricket</option>
<option label="Swim" value="7" selected="selected">Swim</option>
</optgroup>
<optgroup label="Rest">
<option label="Sauna" value="3">Sauna</option>
<option label="Massage" value="1">Massage</option>
</optgroup>
</select>


{html_checkboxes} および {html_radios} も参照してください。

Comments
No comments for this page.

Advertisement

Sponsors [info]

Sponsors