What is Smarty?
Why use it?
Use Cases and Work Flow
Syntax Comparison
Template Inheritance
Best Practices
Crash Course
You may use the Smarty logo according to the trademark notice.
For sponsorship, advertising, news or other inquiries, contact us at:
{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. values
と
ouptut
を個別の配列で指定したドロップダウン
<?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}
も参照してください。