4.2. セレクト要素の操作

4.2.1. オプションリストを設定する

セレクト (<SELECT>) 要素内のオプションリストを直接テンプレートデータ内に記述することができますが、 プログラムからこのリスト内容を設定することもできます。 これにより動的にセレクト要素内のオプションリストを簡単に変化させることができるようになります。

プログラムからオプションリストを設定する際のテンプレート側データもいたってシンプルです。 ただ単純に name 属性を持ったセレクト要素を準備しておきます。 そのセレクト要素内にオプションリストを記述しておく必要はありません。

<form name="form1">
  <select name="items">
  </select>
</form>

オプションリストの設定には、setOption メソッドを使用します。 第一パラメータには設定したいセレクト要素の名称 (name 属性の値)、 第二パラメータには設定したいリスト内容を連想配列として作成したものをセットします。

$master = new Rune_Master('/path/to/templateDirectory');

$items = array('1' => '杖', '2' => '書物', '3' => 'ストーン');

$master->setOption('items', $items);
$master->cast('example');

以上のコードを実行すると、次のような結果を得ることができます。

<form name="form1">
  <select name="items">
    <option value="1">杖</option>
    <option value="2">書物</option>
    <option value="3">ストーン</option>
  </select>
</form>

4.2.2. オプションリストを設定した要素を選択状態にする

setOption とあわせて、そのセレクト要素の値を setFormValue を使って設定することで、 プログラムから設定されたオプションリストをもつセレクト要素を選択状態にすることができます。

例 4.2. 動的リストをもつセレクト要素を選択状態にする

PHP コード
$formValue = new stdClass();
$formValue->items = 2;
$items = array('1' => '杖', '2' => '書物', '3' => 'ストーン');

$master->setFormValue('form1', $formValue);
$master->setOption('items', $items);

$master->cast('example');
実行結果
<form name="form1">
  <select name="items">
    <option value="1">杖</option>
    <option value="2"  selected="selected">書物</option>
    <option value="3">ストーン</option>
  </select>
</form>