よくある確認画面でのhiddenデータの持ち回り ver2
CakePHP 1.2 RC3を利用しています。
前に書いた記事
よくある確認画面でのhiddenデータの持ち回り
で、自作ヘルパーを呼び出す際に、引数にモデル名を入れて、POSTされた該当モデル名のデータを展開してhiddenにセットしていたのですが、引数に何も指定せず、POSTされたデータ全てをhiddenにセットしたほうが良いと思い改良しました。
コメントくれた方ありがとうございました。
下記、改良したヘルパーです。再帰にしようか迷ったけど、3階層以上になることが想定できなかったので、foreach3回にしました。
追記:3階層以上の対応はこのヘルパーをお使いください。https://github.com/ichikaway/cakeplus/blob/master/views/helpers/formhidden.php
app/views/helpers/formhidden.php
<?php class FormhiddenHelper extends AppHelper { var $helpers = array('Form'); function hiddenVars() { $ret = ""; foreach ($this->data as $key1 => $val1){ foreach ($val1 as $key2 => $val2) { if(is_array($val2)){ foreach( $val2 as $key3 => $val3 ){ $ret .= $this->Form->hidden("$key1.$key2.$key3")."\n"; } }else{ $ret .= $this->Form->hidden("$key1.$key2")."\n"; } } } return $ret; } } ?>
これを使う場合は、コントローラで、
var $helpers = array('Formhidden');
というようにしてヘルパーを読み込んでおき、確認画面のViewファイルで下記のようにします
<form method="post"> <?php echo $formhidden->hiddenVars(); ?> <input type="submit" /> </form>