- ベストアンサー
PEARのQuickFormを使って同一ページ内に複数フォームを設置する方法
- PEARのQuickFormを使って同一ページ内に2つのフォームを設置したいが、一方のフォームの送信ボタンを押すと両フォームが確認表示となり、他方のフォームは出力させたい。解決方法はあるか?
- 同一ページ内に2つのフォームを設置する際、フォームの送信ボタンを押すと両フォームが確認表示となってしまう。他方のフォームは出力させたいが、解決策はあるか?
- PEARのQuickFormを使用して同じページに2つのフォームを設置したいが、片方のフォームの送信ボタンを押すと両方のフォームが確認表示となってしまう。他方のフォームはそのまま出力させたい場合、解決方法はあるか?
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
- ベストアンサー
インスタンスを個別に生成しなければどちらが送信されたか判別が出来ないでしょう。Smarty テンプレート側も、インスタンスを個別にアサインしてください。 $form_a = new HTML_QuickForm(...); $form_b = new HTML_QuickForm(...); 検証も個別にします。 if ($form_a->validate()) { $form_a->freeze(); $form_a->process(...); } if ($form_b->validate()) { $form_b->freeze(); $form_b->process(...); } 処理の内容はどちらも同じでしょうから、適当にコールバックとして記述しておき、検証を通過したときに呼び出すとよいでしょう。 ご自身で記述されたコードにあわせて適当に書き換えてくださいね。
その他の回答 (1)
よくある質問への回答に記載されているようです。 http://pear.php.net/manual/ja/package.html.html-quickform.intro-faq.php コンストラクタ6番目の引数を「true」とすることで、送信されたことを確認する機能を使用することができます。これで個別にフリーズすることが出来るでしょう。デフォルトのレンダラで動作を確認いたしました。
補足
ご回答ありがとうございます。 $form = new HTML_QuickForm(); となっていたところを $form = new HTML_QuickForm($formName='', $method='post', $action='', $target='', $attributes=null, $trackSubmit = true); としてみましたが、今度は送信ボタンを押したら、 確認画面に遷移しなくなりました。 入力画面のままで入力した文字も消えてしまいました。 書き換え箇所や書き換え方が間違っていましたでしょうか?
お礼
ありがとうございました。 できそうな気がしました。