ま、そんなこともあるよね、人間だもの。良くわかんないけどこんなんでいいんジャマイカ。
hiddenで配列を作るためには、こんな感じにしなくてはならぬ。
<input type="hidden" name="hoge" value="1"/> <input type="hidden" name="hoge" value="2"/> <input type="hidden" name="hoge" value="3"/>
とりあえずこうやってみた。
<?php echo $form->hidden("hoge",array("value"=>1))?> <?php echo $form->hidden("hoge",array("value"=>2))?> <?php echo $form->hidden("hoge",array("value"=>3))?>
だけどcakeの仕様でこうすると値を上書きしちゃうので、配列でとれない。
で、Viewにベタ書きとか流行んないから、hiddenで吐き出すヘルパーを作った。
<?php function hiddenArray($keyName, $data) { $html =""; if(is_array($data)){ foreach ($data as $v){ $html .= sprintf('<input type="hidden" name="%s" value="%s">', h($keyName),h($v)); } $html .= "\n"; } } return $html; }
Viewに吐き出す時はこう。
<?php echo $hogeHelper->hiddenArray('hoge[]', $data); ?>
で、Controllerで受け取る時は、これで取得できる。
<?php $this->params->['form']->['hoge'];
いじょ。
P.S
HTMLエスケープのご指摘を頂いた。危ない、危ない。h()で囲えばおkのはずなので、明日確認する。