{html_options}関数 HTMLセレクト<select><option>タグを作成する

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

属性名必須デフォルト概要
valuesarrayYes (options属性を用いない場合)n/a ドロップダウンリストのvalue属性の配列
outputarrayYes (options属性を用いない場合)n/a ドロップダウンリストの出力内容の配列
selectedstring/arrayNoemptyあらかじめ選択されているオプション要素
optionsassociative array
連想配列
Yes (valuesとoutput属性を用いない場合)n/a キーがvalues属性、要素がoutput属性の連想配列
namestringNoemptyselectグループの名前

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

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

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

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

PHP

$smarty->assign('pref_options', array(
                                     11 => '埼玉県',
                                     12 => '千葉県',
                                     13 => '東京都',
                                     14 => '神奈川県')
                                   );
$smarty->assign('pref_id', 13);

テンプレート

{html_options name=id options=$pref_options selected=$pref_id}

name 属性が存在することで <select> タグが作成されることに注意しましょう。

出力

<select name="id">
<option label="埼玉県" value="11">埼玉県</option>
<option label="千葉県" value="12">千葉県</option>
<option label="東京都" value="13" selected="selected">東京都</option>
<option label="神奈川県" value="14">神奈川県</option>
</select>

PHP

$smarty->assign('pref_ids', array(11,12,13,14));
$smarty->assign('pref_names', array(
                                '埼玉県',
                                '千葉県',
                                '東京都',
                                '神奈川県')
                              );
$smarty->assign('pref_id', 13);

テンプレート

<select name="id" size="{$pref_names|@count}">
   {html_options values=$pref_ids output=$pref_names selected=$pref_id}
</select>

PHP の count() 関数を修飾子として使用することで、 select の大きさを設定していることに注意しましょう。

出力

<select name="id" size="4">
<option label="埼玉県" value="11">埼玉県</option>
<option label="千葉県" value="12">千葉県</option>
<option label="東京都" value="13" selected="selected">東京都</option>
<option label="神奈川県" value="14">神奈川県</option>
</select>

PHP

$smarty->assign('pref_options', array(
                                     11 => '埼玉県さいたま市浦和区高砂3丁目15番1号',
                                     12 => '千葉県千葉市中央区市場町1番1号',
                                     13 => '東京都新宿区西新宿二丁目8番1号',
                                     14 => '神奈川県横浜市中区日本大通1番')
                                   );
$smarty->assign('pref_id', 13);

テンプレート

<select name="id" size="{$pref_names|@count}">
    <option value='null'>-- none --</option>
    {html_options options=$pref_options|truncate:20 selected=$pref_id}
</select>

truncate 修飾子の使用法に注意しましょう。

出力

<select name="id">
<option label="埼玉県さいたま市浦和" value="11">埼玉県さいたま市浦和</option>
<option label="千葉県千葉市中央区市" value="12">千葉県千葉市中央区市</option>
<option label="東京都新宿区西新宿二" value="13" selected="selected">東京都新宿区西新宿二</option>
<option label="神奈川県横浜市中区日" value="14">神奈川県横浜市中区日</option>
</select>

<optgroup> を使用したドロップダウン

PHP

$arr['tokai'] = array(22 => "愛知県", 24 => "三重県", 23 => "岐阜県", 19 => "静岡県");
$arr['hokuriku'] = array(17 => "石川県", 16 => "福井県", 18 => "富山県");
$smarty->assign('pref_options', $arr);
$smarty->assign('pref_id', 24);

テンプレート

{html_options name=id options=$pref_options selected=$pref_id}

出力

<select name="id">
<optgroup label="tokai">
<option label="愛知県" value="22">愛知県</option>
<option label="三重県" value="24" selected="selected">三重県</option>
<option label="岐阜県" value="23">岐阜県</option>
<option label="静岡県" value="19">静岡県</option>
</optgroup>
<optgroup label="hokuriku">
<option label="石川県" value="17">石川県</option>
<option label="福井県" value="16">福井県</option>
<option label="富山県" value="18">富山県</option>
</optgroup>
</select>

関連記事

スポンサーリンク

Bitmap meter ビットマップメーター

ホームページ製作・web系アプリ系の製作案件募集中です。

上に戻る