よくある確認画面での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>