-
Notifications
You must be signed in to change notification settings - Fork 0
/
form_template.html
77 lines (73 loc) · 3.47 KB
/
form_template.html
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
<!DOCTYPE html>
<html lang="ja">
<head>
<meta charset="utf-8">
<title>Ethnamドキュメント</title>
<link href="css/style.css" media="all" rel="stylesheet" />
<link href="css/github.css" media="all" rel="stylesheet" />
</head>
<body>
<p><a href=".">目次</a></p>
<div class="blob instapaper_body">
<article class="markdown-body entry-content">
<h1>フォームテンプレート</h1>
<p>アクションフォームの定義を毎回配列の形で書いていくのは、数が多くなってくると非常に面倒です。フォームテンプレートは、そんな要求があった場合に、親クラスに共通の雛形を定義することで、子クラスでその定義を省略させることができる機能です。</p>
<p>複数の画面で共通するフォームがあったような場合に、この機能は特に有用です。</p>
<ul>
<li>フォームテンプレート
<ul>
<li>基本的な使い方 </li>
<li>サンプルコード </li>
<li>使い方のコツ </li>
</ul></li>
</ul>
<p>| 書いた人 | ------ | ---------- | 新規作成 |
| 書いた人 | mumumu | 2009-01-29 | 最新版に追随する形で全面的に修正 |</p>
<h3>基本的な使い方</h3>
<p>アクションフォームの親クラスに以下のように書くだけで、子クラスのActionFormでフォーム名を書くだけでその定義が使えるようになります。また、その定義のオーバライドも可能です。</p>
<pre><code>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,
),
);
}</code></pre>
<h3>サンプルコード</h3>
<p>以下に例を示します。上記の親クラスを継承し、'mailaddress' の定義をそのまま使うようにしています。また、オーバライドする例も示しています。</p>
<pre><code>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,
),
);
}</code></pre>
<h3>使い方のコツ</h3>
<p>Ethna 2.3.0 からは、プロジェクトごとの親クラスとして次のファイルがありますので、 それに$form_template を定義しましょう。</p>
<pre><code>{APPID}/app/{APPID}_ActionForm.php</code></pre>
<p>また、共通のカテゴリ毎に、アクションフォームクラスを分割し、子クラスに継承させるのもひとつの手です。</p>
<pre><code>{APPID}/app/{APPID}_ActionForm.php
{APPID}/app/{APPID}_ActionForm_Hoge.php
{APPID}/app/{APPID}_ActionForm_Fuga.php</code></pre> </article>
</div>
<div class="site-footer">
@2015 <a href="https://twitter.com/DQNEO">DQNEO</a>
</div>
</body>
</html>