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 件のコメント:
コメントを投稿
注: コメントを投稿できるのは、このブログのメンバーだけです。