カテゴリー

最新の記事

最近のコメント

最近のトラックバック

月別アーカイブ

ブログ検索

RSSフィード

ブロとも申請フォーム

この人とブロともになる

スポンサーサイト

スポンサー広告
--.--.--
上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。

ベンチャーブログのランキングに参加しています。
下のバナーをクリックして応援していただけると嬉しいです。
にほんブログ村 ベンチャーブログへ

PHPフレームワークもどき「PnF」(6)~サンプルコード「FormBox」

PHP
2008.11.24
次に「FormBox」のコードを作成しましょう。表示要素が「MenuBox」よりも多いので、記述もその分多くなります。いくつかに分けて見ていきましょう。

コード6-1

3~5行目
まずVCの親クラスをインクルードし「VcFormBox」クラスを派生させます。

15~22行目
「FormBox」が保持すべき情報を「$vcProperty」として宣言しています。プロパティ情報の宣言は、プロパティ名をキーとした連想配列として行います。連想配列の値の部分は、ふたつの要素を持つ連想配列になっています。
ひとつめの要素のキーは「sync_session」であり、この値に「TRUE/FALSE」を設定することで、プロパティ情報をSESSION変数と同期させるか否かを指定します。SESSION変数に同期させることで、このプロパティ情報を複数の画面で「継続的に」使用できるようになります。
ふたつめの要素のキーは「filtered_value」です。ここにはプロパティ情報の内容を設定します。スカラー値はもちろんのこと、配列や構造体をプロパティ情報として設定することも可能です。
なおこの「FormBox」では、BOXの表示状態(表示/非表示)を記憶するために「DisplayMode」というプロパティ情報を設定しています。デフォルト値は'display:none'という文字列です。これをVCのHTMLテンプレートに埋め込むことで、表示/非表示をコントロールするわけです。

コード6-2

25~84行目
「FormBox」で使用するVPを宣言しています。各VPは以下の機能を持ちます。

NameField:「名前」欄の入力フィールドです。データタイプは「TEXT」、IMEモード(仮名漢字変換機能)はアクティブ、フィールドのサイズは25文字、入力可能な最大文字数は255文字に設定されています。文字列の初期値は''です。

NameErrorMessage:「名前」欄の入力に問題があったときに、エラーメッセージを表示するテキスト表示要素です。初期値は''です。

MailField:「メールアドレス」欄の入力フィールドです。データタイプは「MAIL」、IMEモードは非アクティブ、フィールドのサイズは25文字、入力可能な最大文字数は255文字に設定されています。初期値は''です。

MailErrorMessage:「メールアドレス」欄の入力に問題があったときに、エラーメッセージを表示するテキスト表示要素です。初期値は''です。

DescriptionField:「詳細」欄の入力フィールドです。ここではテキストエリアを使用しています。ime_mode、wrap、cols、rowsの意味はHTMLのテキストエリアの各属性と同じものです。

Navigation:「登録」「キャンセル」のナビゲーションに使用するリンクです。「登録」をクリックすると「ENTER」というローカルイベントが発生します。「キャンセル」をクリックすると「CANCEL」というローカルイベントが発生します。

コード6-3

87行目
「FormBox」が引き受けるGET変数の定義です。このVCはGET変数を引き受けないため、空配列を記述しておきます。

90~108行目
「FormBox」がサブスクライブするイベント名と、各イベント名に対応するアクションメソッド名の定義です。「OPEN_ENTRY_FORM」を受け取った時には「openForm」、「ENTER」を受け取った時には「execFormEntry」、「CANCEL」を受け取った時には「cancelFormEntry」、「REFRESH」を受け取った時には「refreshViewData」を呼び出します。

コード6-4

115~116行目
イベント処理チェーンに入る直前に実行したい処理を「前処理」として記述します。このVCでは何も行いません。

118~121行目
アクションメソッド「openForm」の処理内容です。このアクションメソッドは「自分自身を表示する」というものなのですが、実際のHTML生成は後述のテンプレートに任せることになるので、ここではプロパティ情報の変更だけを行います。つまり15~22行目で記述した「DisplayMode」の値を「display:block」にするわけです。VCプロパティ情報の変更は「setVcProperty」で行います。このメソッドはVCの親クラスで定義されているので「$this->」を頭に付けて呼び出します。

コード6-5

123~168行目
アクションメソッド「execFormEntry」の処理内容です。このアクションメソッドは、入力フィールドの内容をチェックし、エラーがなければ「ADD_ITEM」イベントを発生させ、エラーがあればエラーメッセージを表示(VPにセット)します。
イベントを発生させる時には、第3引数にサブスクライブ側に引き渡したいデータセットを指定できます。ここではフォームの内容を格納した構造体を作成し、これを第3引数に指定しています。これでイベントを受け取る側は、フォームの内容を受け取ることができるわけです。
VPへの値のセットは「$this->setVpProperty」で行います。引数は「VP名」「プロパティ名」「プロパティ値」です。例えば「NameErrorMessage」というVPの「filtered_value」に文字列をセットするには、151~153行目のような記述になります。
なお入力チェック処理の内容は、後述する別メソッド「checkInputValue」で定義されています。

コード6-6

170~180行目
アクションメソッド「cancelFormEntry」の処理内容です。フォーム内容をクリアし、フォームを非表示にします。

182~183行目
REFRESHイベントに対応した処理の記述です。ここでは何も行いません。

コード6-7

185~231行目
入力チェック処理のメソッドです。VCが自分自身の中だけで使用するメソッドはprivateで宣言します。
入力フィールドに入力された内容は、イベント処理チェーンが始まる前にPnFコアによってチェックされ、各VPの「check_status」プロパティにセットされています。どのような内容がセットされるのかはフィールドのデータタイプによって若干異なります。例えば入力フィールドに何も入力されていなければ「NULL」、使用できない文字が混ざっていた場合には「INVALID_STRING」がセットされます。他にも「INVALID_TYPE(データ型が異なる)」「TOO_SMALL(設定された最小値よりも小さい))」「TOO_BIG(設定された最大値よりも大きい)」「TOO_SHORT(設定された最小文字数よりも文字数が少ない)」「TOO_LONG(設定された最大文字数よりも文字数が多い)」が用意されています。問題がない場合には「VALID」がセットされます。

コード6-8

236~277行目
HTMLテンプレートです。248行目でVCプロパティの「DiaplayMode」の値、250~261行目で使用しているVPのHTMLテンプレートを取得し、$htmlの中に埋め込んでいます。この$htmlの値が、このVCのHTML記述になります。
スポンサーサイト

ベンチャーブログのランキングに参加しています。
下のバナーをクリックして応援していただけると嬉しいです。
にほんブログ村 ベンチャーブログへ

FC2Ad

相続 会社設立

上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。