- ベストアンサー
フォーム内容を丸ごと置き換えるには?
テンプレートとスクリプトを別ファイルにして作成しています。 フォームの送信後、確認画面を表示させたいのですが、<form>から</form>の間までを一括して置き換えることはできるのでしょうか。 pearで行くと、 $template =~ s/<form.+?<\/form>/$line/s; のような記述です。似たような処理の方法をご存知でしたら、どなたかお願いいたします。
- みんなの回答 (3)
- 専門家の回答
質問者が選んだベストアンサー
それならSmartyを勉強した方が早いですよ! PHPでHTMLファイルを読み込んで云々…、といった処理は非現実的だと思います。 フォームの入力画面と確認画面でデザインが異なるのはよくあることですよね。 Smartyを使えば、入力画面と確認画面で別のテンプレートを用意するだけで対応できますよ。 構文もそれほど難しくないですし、Smartyの本が出ていますが、買う必要もないと思います。 僕はSmartyマニュアルだけで勉強しました。
その他の回答 (2)
- yambejp
- ベストアンサー率51% (3827/7415)
ご希望のフローは、例外処理を多用してつぎはぎ だらけのスクリプトになりそうでかなり危険です。 どうしてもというのであれば、確認画面は 再帰的な処理ではなく、別ファイルでうければ すむので、その方向で考え直してみてはいかがですか? もちろんどうしてもと言うのであれば止めませんが それなりの自己解決能力が必要だとおもいますが。
お礼
おっしゃるとおり、結局はデザインの方に解決力を求めるような形になりそうですね。大人しくSmartyを勉強します。
- yambejp
- ベストアンサー率51% (3827/7415)
置き換えなどせずに、フォームのエリアをブロック化しておき flgで変数の内容を変えておけば管理もらくです。 <?PHP if($_GET["flg"]==1){ $form_block.=<<< eof 確認します。<br> testデータ、「{$test}」を受け取りました。 eof; }else{ $form_block.=<<< eof <form> test:<input type="text" value="test"> <input type="hidden" value="1"> <input type="submit" value="送信"> </form> eof; } print <<<eof <html> <body> {$form_block} </body> </html> eof; ?>
お礼
ありがとうございます。 ですが、私以外がレイアウトを変更する可能性があるため、できる限りHTMLと切り離したいのです。 PHPでHTMLファイルを読み込み、その中のある部分からある部分を置き換える、といったことはできないでしょうか。 smartyを勉強したほうが早いですか?
お礼
非現実的とまで言われてしまった(笑) perlではそれでやってたんですが、確かにこれだと確認のform部分はスクリプト内なんですよね。やっぱりSmartyですか。 ありがとうございます。勉強してみます。