2012年12月12日水曜日

CakePHP 動的に生成したフォームのバリデーション

CakePHPで動的に生成したフォームに対し、どうやってバリデーションしたらいいのか小一時間悩む。小一日くらい悩みました。
やりたかったことは以下のとおり。

ある入力フォームのページで、ロード時にデータベースの値を取得し、その値によってページのフォームの数が変わるというページを作成。

DBから取得した値が2なら、0~1($i)までループを回して
echo $form->input('Model.name'.$i, array('name' => 'distribution', 'label' => false)
をctpで表示。

普通、Modelと関連付けてのバリデーションは、ひとつひとつのフォームのnameに対してあらかじめ設定します。
このような動的に生成したフォームに対してModelからバリデーションを設定できるのかとトライ・アンド・エラーでいろいろと試行錯誤するものの、動くというだけでエラー表示もはちゃめちゃな代物に。

で、思い余ってCakePHPフォーラム様におそるおそる聞いてみたところ、優しい方に配列でフォーム値を取得できるやり方をご回答いただいたので、そこからさらに色々と調査してみてどうにか出来ました。

動的に生成したフォームのバリデーション
http://cakephp.jp/modules/newbb/viewtopic.php?topic_id=2723&forum=7

0 件のコメント:

コメントを投稿

注: コメントを投稿できるのは、このブログのメンバーだけです。