Ethna > ドキュメント > 開発マニュアル > フォームテンプレート
フォームテンプレート
アクションフォームの定義を毎回配列の形で書いていくのは、数が多くなってくると非常に面倒です。フォームテンプレートは、そんな要求があった場合に、親クラスに共通の雛形を定義することで、子クラスでその定義を省略させることができる機能です。
複数の画面で共通するフォームがあったような場合に、この機能は特に有用です。
書いた人 | ------ | ---------- | 新規作成 |
書いた人 | mumumu | 2009-01-29 | 最新版に追随する形で全面的に修正 |
基本的な使い方
アクションフォームの親クラスに以下のように書くだけで、子クラスのActionFormでフォーム名を書くだけでその定義が使えるようになります。また、その定義のオーバライドも可能です。
class Sample_ActionForm extends Ethna_ActionForm { var $form_template = array( 'mailaddress' => array( 'name' => 'メールアドレス', 'required' => true, 'max' => 255, 'filter' => FILTER_HW, 'custom' => 'checkMailaddress', 'form_type' => FORM_TYPE_TEXT, 'type' => VAR_TYPE_STRING, ), ); }
サンプルコード
以下に例を示します。上記の親クラスを継承し、'mailaddress' の定義をそのまま使うようにしています。また、オーバライドする例も示しています。
class Hoge_ActionForm extends Sample_ActionForm { var $form = array( // Ethna 2.5.0 以降では、名前だけ書けば良い // もちろん、定義の一部も変更可能 'mailaddress', // Ethna 2.3.5 以前では、名前に加えて array(), も必要 'mailaddress' => array(), // 以下のようにすれば、定義を変更可能 // 親クラスでは required が true だったが // ここでは false に変更している。 // 他の filter や name 等の定義は親クラスのまま。 'mailaddress' => array( 'required' => false, ), ); }
使い方のコツ
Ethna 2.3.0 からは、プロジェクトごとの親クラスとして次のファイルがありますので、 それに$form_template を定義しましょう。
{APPID}/app/{APPID}_ActionForm.php
また、共通のカテゴリ毎に、アクションフォームクラスを分割し、子クラスに継承させるのもひとつの手です。
{APPID}/app/{APPID}_ActionForm.php {APPID}/app/{APPID}_ActionForm_Hoge.php {APPID}/app/{APPID}_ActionForm_Fuga.php