• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:PEARのQuickFormを用いて同一ページ内で複数フォーム設置について)

PEARのQuickFormを使って同一ページ内に複数フォームを設置する方法

このQ&Aのポイント
  • PEARのQuickFormを使って同一ページ内に2つのフォームを設置したいが、一方のフォームの送信ボタンを押すと両フォームが確認表示となり、他方のフォームは出力させたい。解決方法はあるか?
  • 同一ページ内に2つのフォームを設置する際、フォームの送信ボタンを押すと両フォームが確認表示となってしまう。他方のフォームは出力させたいが、解決策はあるか?
  • PEARのQuickFormを使用して同じページに2つのフォームを設置したいが、片方のフォームの送信ボタンを押すと両方のフォームが確認表示となってしまう。他方のフォームはそのまま出力させたい場合、解決方法はあるか?

質問者が選んだベストアンサー

  • ベストアンサー
noname#243182
noname#243182
回答No.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(...); } 処理の内容はどちらも同じでしょうから、適当にコールバックとして記述しておき、検証を通過したときに呼び出すとよいでしょう。 ご自身で記述されたコードにあわせて適当に書き換えてくださいね。

参考URL:
http://pear.php.net/manual/ja/package.html.html-quickform.output.template-renderers.php
chibibichi
質問者

お礼

ありがとうございました。 できそうな気がしました。

その他の回答 (1)

noname#243182
noname#243182
回答No.1

よくある質問への回答に記載されているようです。 http://pear.php.net/manual/ja/package.html.html-quickform.intro-faq.php コンストラクタ6番目の引数を「true」とすることで、送信されたことを確認する機能を使用することができます。これで個別にフリーズすることが出来るでしょう。デフォルトのレンダラで動作を確認いたしました。

参考URL:
http://pear.php.net/manual/ja/package.html.html-quickform.html-quickform.html-quickform.php
chibibichi
質問者

補足

ご回答ありがとうございます。 $form = new HTML_QuickForm(); となっていたところを $form = new HTML_QuickForm($formName='', $method='post', $action='', $target='', $attributes=null, $trackSubmit = true); としてみましたが、今度は送信ボタンを押したら、 確認画面に遷移しなくなりました。 入力画面のままで入力した文字も消えてしまいました。 書き換え箇所や書き換え方が間違っていましたでしょうか?

関連するQ&A