特にない。
Zend_Formを使用する場合はZend_Configを使う。設定内容はZend_Formにしたがう。
入力コントロール(TextBoxなど)の入力から不要な文字を取り除く、文字入力を適切な型に変換するなど。
DateTimeFilter | 日付用。入力文字列が日付形式であると仮定して日付オブジェクトに変換する。 |
NumberFilter | 数値用。入力値から数値用文字列を取り除き、設定精度に基づき数値に変換する。 |
StringFilter | 文字列用。入力値から入力可能文字を取り除き、トリミングなどした後設定長さに基づき文字数を制限する。 |
DefaultFilter | 何もしない。入力をそのまま受け入れるが内容は文字列のまま。 |
入力内容の検証
FieldValidator#GetInstanceを使用してFieldPropertyオブジェクトに対応したFieldValidatorを取得する。
FieldValidator#Validate()を呼び出す。エラーメッセージはErrorMessageプロパティを参照する。
入力コントロール(TextBoxなど)とエンティティを紐付けるための要素。入力コントロール、Filter、FieldValidatorからなる。
入力コントロールに基づくFormAdapterElement実装クラスのオブジェクトを生成する。
必要に応じてFilter、FieldValidator、出力フォーマットを設定する。
FormAdapterElement#SetValueを実行しエンティティのプロパティなどを要素の値に設定する()
FormAdapterElement#Render()を呼び出して表示を更新する。
FormAdapterElement#UpdateFieldを呼び出して要素内に入力内容を取り込む。
FormAdapterElement#Validateを呼び出して検証を実行する。検証結果メッセージはFormAdapterElement#ErrorMessageに保持されている。
FormAdapterElement#GetValueを呼び出し必要なデータを取り出す。
検証がvalidならFilterで定義した型の値をobject型で受け取れる。この時は必要な型にキャストする。
検証がinvalidなら取り出せるのは文字列型なので、エンティティのプロパティには設定できない。
エンティティと入力コントロールを紐付ける。
つまりエンティティとエンティティのプロパティ毎のFormAdapterElementを持つ。というかFormAdapterElementの塊。
通常は自動生成されたTableFormAdapterを継承するクラスを使う。
FormAdapter実装クラスのインスタンスを生成する。
各FormAdapterElementを初期化する。
FormAdapter#setEntityを呼び出しエンティティを設定する。
FormAdapter#RenderView()を呼び出す。場合によっては各FormAdapterElement#Renderを呼び出す(webフォームなど)。
FormAdapter#Bind()を呼び出す。検証結果は各FormAdapterElementが保持する。
各FormAdapterElementが保持するmessageを表示する。
FormAdapter#getEntityを呼び出しエンティティを取得する。
個々の画面定義
エンティティ、FormAdapter、フォーム実体からなる。適宜モデルクラスを使用してエンティティを操作する。