cakephperの日記(CakePHP, MongoDB) Twitter


PHPMatsuri2011開催決定! 10/15(sat), 16(sun) 大阪。
http://2011.phpmatsuri.net/

2008-12-10

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

スパム対策のためのダミーです。もし見えても何も入力しないでください
ゲスト


画像認証