CakePHP2 Formヘルパーのcheckboxの使えなさときたら。。。

checkboxで複数選択の項目を作る場合、cakephpでは次のように書く説明がよくみられます。

$options = array('foo','var');
$formdata = $_POST['data'][フィールド名];

$this->form->input("フィールド名",
 	array(
 		'type'=>'select',
 		'multiple' => 'checkbox',
 		'div'=>false,
 		'label'=>false,
 		'legend'=>false,
 		'options' = $options,
 		'selected' = $formdata,
	)
);

確かに複数で出力される。

だがしかし!「’div’=>false」が効いてない(´・ω・`)

チェックボックスを横並び出来ないっていう。。。。
ソース追いかけたらdivオプション自体がシカトされてる。

皆どうしてるんだろう???

そもそも$this->form->inputは色々な機能を盛り込んだ$this->form->xxxxのalias的な物
エラーメッセージの出力なども自動でやってくれる便利な子ではあります。
色々共通化した結果の歪がこれなんでしょうね。

けど、CakePHPってこうした落とし穴がところどころ存在して悩まされる。
普通に使うFormヘルパーにもこんな落とし穴作るとかもうダメダメじゃん。。。
何でこんなフレームワークが日本でたくさん使われてるのかマジ理解不能。

さらに今回はフィールド名のところを空にしたり、name属性を調整したりと
ソース踏襲の為にFormヘルパーを使て次のように対応

$options = array('foo','var');
$formdata = $_POST['data'][フィールド名];

$i=0;
foreach($options as $val){
	$checked=false;
	if( $data[フィールド名][$i] == $val ) $checked = true;

	echo '<label>';
	echo $this->Form->input(false,
		array("name"=>"data[フィールド名][$i]","type"=>"checkbox",'label'=>false,'div'=>false,'value'=>$val,"checked"=>$checked));
	echo $val.'</label> ';
	$i++;
}
if(isset($errors[フィールド名])) echo '<div class="error-message">'.$errors[フィールド名][0].'</div>';

第1引数のフィールド名をfalseにして色々な機能をOffにして対応。
とりあえず目的の事は出来た。

で、テストしてたら何故だか直前の入力フィールドのエラーメッセージがこのcheckboxに反映されるという
奇々怪々な現象が発生。

いやね、最初は私がフィールド名を間違って書いたのかと思いましたよ。
けどそうじゃなかった!!

inputメソッドの第1引数にフィールド名を指定して使った後に
inputメソッドの第1引数にfalseを使うと、前者のエラーメッセージを拾い上げてくれる優れもの!
もう失笑です。

‘error’=>false

のオプションを追加して非表示にできたけどもさ。。。
もうほんと、なんだかなぁ~って感じです。

昔から不勉強を棚に上げて「使いにくいから!」とFormヘルパーを使わずにゴリゴリPHPコード書いてたんだけど、
やっぱりその方法が正解のようです。

ちなみにバージョンは2.7.8です。