[PHP-users 28602] 複数ページフォームのページ遷移制御について
Mitsuharu Takano
mtakano @ r2.dion.ne.jp
2006年 3月 2日 (木) 01:35:18 JST
こんばんは。
高野と申します。
現在 php5 + HTML_QuickForm + Smartyを使用して
Webアプリを作成しております。
とりあえず動作はするようになったのですが今ひとつ
美しくないので、何かご意見いただけたらと思いメール
しました。
私が作っているアプリの標準的な画面/処理遷移は、以下の通りです。
1) 入力画面
a) Validate
2) 確認画面
a) 戻るボタン --> 1)入力画面へ戻る
b) OKボタン --> DB更新処理などを行い 3)結果画面へ
3) 結果画面
Q) ページ遷移をどのように処理するか?
現在、以下のような流れで処理しています。
ブラウザアクセス http://<url>?app=xxx&action=yyy
-> Controller Class
(appとactionを解析して該当するAction Classを呼び出す)
(*)-> Action Class
(Request Method(GET/POST) 及び $_POSTデータ、HTML_QuickForm
のValidateの結果を元に実行する処理を決定、該当する
Sub Action Classを初期化して呼び出し)
-> Sub Action Class
(データ処理を実行、表示するView ClassをController Classに返す)
-> Controller Class
(返されたView Classを呼び出し)
-> View Class
(HTML_QuickForm及び$_SESSIONからデータを取得、Smartyを使って
画面生成、表示)
質問は(*)のAction Class内の処理分岐です。
このAction Class内では、
1) GETアクセスの場合は新規アクセス
2) POSTアクセスの場合は、a)確認画面から戻ってきたか、
b)Validateでエラーになったか
と判断し、実行するSub Actionを決定しています。
Action Classが
"Sample_Input_Action" とすると、
Sub Action Classは
"Sample_Input_Action_Input" (入力画面を表示)
"Sample_Input_Action_DBUpdate" (更新処理後、結果画面を表示)
のようになります。
私のAction Classのソースではこの処理をベタに、
try {
$sub_action = new Sample_Input_Action_Input($args)
$sub_action->execute();
} catch (MyAppException $e) {
...
}
のように行っているのですが、ここが美しくないのです。
そこで、みなさんは複数ページのフォーム処理において、
処理の分岐をどのようにハンドリングしているのか、何か
ご意見/コメント等いただければと思います。
よろしくお願いします。
PHP-users メーリングリストの案内