チェックボックスを配列指定した場合の初期値
HTML_QuickForm2でも前バージョンと同様に、チェックボックスで送られてくる際のvalue値は1だ。これは「一つのチェックボックスが一つの設問を構成する」という前提で作られているためだと思う(例えば「○○が必要な場合にはチェック」というような感じ)。「当てはまるものすべてにチェックしてください」みたいな設問への配慮がないのはなぜだろう。いつも疑問に思う。
いわゆる「多岐選択」でチェックボックスを使うときはこんな具合に指定する。
$element[]=$myForm->addElement(‘checkbox’,’q1[a]’,NULL,array(‘content’=>’a’));
$element[]=$myForm->addElement(‘checkbox’,’q1[b]’,NULL,array(‘content’=>’b’));
$element[]=$myForm->addElement(‘checkbox’,’q1′,NULL,array(‘content’=>’c’));
name属性が入るべきところにq1[a]という具合に配列っぽく記載する。もちろんこの記述でフォームからデータが送られてくると、値は配列となって送られてくる。
上記のような場合のデフォルト値の設定は配列として与えてやることになる。
$myForm->addDataSource(
new HTML_QuickForm2_DataSource_Array(
array(
‘q1’=>array(‘a’=>1,’b’=>1),
)
)
);
少し、慣れてきたかな。