forked from fuel/docs
/
errors.html
243 lines (207 loc) · 10.7 KB
/
errors.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
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
<!doctype html>
<html lang="ja">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<link rel="stylesheet" href="./../../assets/css/combined.css">
<link rel="shortcut icon" href="./../../favicon.ico" />
<script src="http://www.google.com/jsapi" type="text/javascript"></script>
<script type="text/javascript">
var path = './../../';
var class_prefix = "Validation_Error::";
</script>
<script src="./../../assets/js/combined.js"></script>
<title>Validation Errors - クラス - FuelPHP ドキュメント</title>
</head>
<body>
<div id="container">
<header id="header">
<div class="table">
<h1>
<a href="http://fuelphp.com"><img height="37px" width="147px" src="./../../assets/img/fuel.png" /></a>
<strong>Documentation</strong>
</h1>
<form id="google_search">
<p>
<span id="search_clear"> </span>
<input type="submit" name="search_submit" id="search_submit" value="検索" />
<input type="text" value="" id="search_input" name="search_input" />
</p>
</form>
</div>
<nav>
<div class="clear"></div>
</nav>
<a href="#" id="toc_handle">目次</a>
<div class="clear"></div>
</header>
<div id="cse">
<div id="cse_point"></div>
<div id="cse_content"></div>
</div>
<div id="main">
<h2>Validation クラス</h2>
<p>
Validation クラスは、ユーザ入力をバリデーションする際の手助けをします。
フォームの生成とバリデーションを同時にしたい場合は、代わりに <a href="../fieldset/fieldset.html">Fieldset</a> クラスを使用してください。
</p>
<ul>
<li><a href="#errors">はじめに</a></li>
<li><a href="#naming_rules">コールバック / クロージャーへの名前付けの規則</a></li>
<li><a href="#error_objects">Validation Error オブジェクト</a></li>
</ul>
<section>
<h3 id="errors">エラーメッセージ</h3>
<p class="note">エラーは出力を柔軟に変えられる Validation_Error オブジェクトとして返されます。
もし Validation_Error オブジェクトが必要ないのであれば単純に Validation_Error オブジェクトを文字列型にキャストしてエラーメッセージを取得してください。</p>
<p>エラーメッセージは言語ファイル "validation.php" を設定することで自動的に読み込まれます。</p>
<p>バリデーションにおいて、エラーメッセージを操作する方法は 2 種類あります。</p>
<pre class="php"><code>// バリデーションオブジェクトに対してエラーメッセージを変更する方法
$val->set_message('required', ':label フィールドは必須です。');
// 実際にこのフィールドがエラーかどうかに関われず、フィールドを指定してメッセージを変更する [訳注: エラーがない場合は $val->error('username') が false を返すため例外エラーになります]
echo $val->error('username')->get_message('ユーザー認証には :label フィールドを入力してください');
// username フィールドのバリデーションが失敗された場合、 "ユーザー認証には username フィールドを入力してください" が出力される
// それか、バリデーション未実行もしくはバリデーション成功の場合には何も出力しない</code></pre>
<p>ここで気づいたと思いますが、エラーメッセージにはいくつか変数が用意されており、これらはフィールドのプロパティによって置換されます。
使用可能な変数を下記に列挙します</p>
<table class="config">
<tbody>
<tr class="header">
<th>変数名</th>
<th>説明</th>
</tr>
<tr>
<th>:field</th>
<td>フィールドの name 設定値に置換される</td>
</tr>
<tr>
<th>:label</th>
<td>フィールドの label 設定値に置換される</td>
</tr>
<tr>
<th>:value</th>
<td>バリデーションに失敗した value 値に置換される</td>
</tr>
<tr>
<th>:rule</th>
<td>失敗したバリデーションルール(名)に置換される。フレームワークが用意しているルール名はそのままで、
それ以外はコールバック関数名、または <クラス名>:<メソッド名> の形式で置換される。
(これはつまり、もし必要ならバリデーションルールを自作できるというヒントです)</td>
</tr>
<tr>
<th>:param:1</th>
<td>最初の追加パラメータ (後述) に置換される。:param:2 は、その次の追加パラメータ。以降、同様。
</td>
</tr>
</tbody>
</table>
</section>
<section>
<h3 id="naming_rules">コールバック / クロージャーへの名前付け規則</h3>
<p>コールバック形式のルールまたはクロージャーは全て、好きなように名前が付けらます。デフォルトでは次のように名前付けされます。</p>
<ul>
<li><strong>クロージャー:</strong> "closure"</li>
<li><strong>array($class, $method):</strong> "$class:$method"</li>
<li><strong>array($object, $method):</strong> get_class($object).":$method"</li>
</ul>
<p>もし独自に名前を付けたい場合は下記のようなことが出来ます。</p>
<pre class="php"><code>// 入力された値が奇数かどうかをチェックするルールを追加
// メソッド ->set_message('odd', ':label は奇数ではありません') とペアで使われることでしょう。(または、冒頭のエラーメッセージ用言語ファイルに 'odd' キーを追加しても良いです)
$field->add_rule(array('odd' => function($val) { return (bool) ($val % 2); }));
</code></pre>
</section>
<section>
<h3 id="error_objects">Validation Error オブジェクト</h3>
<p>バリデーションはエラーオブジェクト(実際はバリデーション中に投げられる例外)を返します。
それらオブジェクトは実際のメッセージを取得する必要に応じて文字列型にキャストすることもできますし、
オブジェクトのままでエラー内容のメタデータを取得するのにも使えます。</p>
<h4 id="property_field">$field</h4>
<p><code>$error->field</code> には、エラーを起こした <a href="../fieldset/field.html">Fieldset_Field</a>
オブジェクトへの参照が含まれます。</p>
<h4 id="property_value">$value</h4>
<p><code>$error->value</code> バリデートが失敗した値</p>
<h4 id="property_rule">$rule</h4>
<p><code>$error->rule</code> 失敗したバリデーションルールの名前。
基本的にバリデーションルールとして渡された文字列になりますが、
<a href="#naming_rules">独自に名前付けされた場合</a>には別の文字列になる場合もあります。<br />
<code>'Class::method'</code>, <code>array('Class', 'method')</code> または、
<code>array($object, 'method')</code> などのコールバックとして渡された場合はシンプルに、
<code>'Classname:methodname'</code>という形式になります。</p>
<h4 id="property_params">$params</h4>
<p>バリデーションルールに渡された追加パラメータになります。
例えば、<code>->add_rule('max_length', 25)</code> をした場合は、<code>array(25)</code> というようになります。</p>
<article>
<h4 class="method" id="method_get_message">get_message($msg = false, $open = '', $close = '')</h4>
<p>
エラーメッセージを取得します。エラーメッセージは書き換え可能です。
</p>
<table class="method">
<tbody>
<tr>
<th class="legend">静的</th>
<td>いいえ</td>
</tr>
<tr>
<th>パラメータ</th>
<td>
<table class="parameters">
<tr>
<th>パラメータ</th>
<th>型</th>
<th>デフォルト</th>
<th class="description">説明</th>
</tr>
<tr>
<th><kbd>$msg</kbd></th>
<td><em>false | string</em></td>
<td><pre class="php"><code>false</code></pre></td>
<td><code>false</code> 指定した場合は、自身が所属するバリデーションインスタンスから、
またはコンフィグファイルから、メッセージの取得を試みます。
入力が空の場合、またはコンフィグにメッセージが見つからない場合は、デフォルトの代替用メッセージを返します。
文字列を指定した場合は、その文字列をメッセージとして使用し、
内包する変数を置換して返します。</td>
</tr>
<tr>
<th><kbd>$open</kbd></th>
<td><em>string</em></td>
<td><pre class="php"><code>''</code></pre></td>
<td>メッセージの前に HTML を追加します。</td>
</tr>
<tr>
<th><kbd>$close</kbd></th>
<td><em>string</em></td>
<td><pre class="php"><code>''</code></pre></td>
<td>メッセージの後に HTML を追加します。</td>
</tr>
</table>
</td>
</tr>
<tr>
<th>返り値</th>
<td>string</td>
</tr>
<tr>
<th>例</th>
<td>
<pre class="php"><code>// メッセージを <p> タグで囲んで取得する
$message = $error->get_message(false, '<p>', '</p>');
// 標準設定のメッセージ: "Validation rule :rule failed for :label" を使用する
$message = $error->get_message(null);
// どんなエラーメッセージが与えられていようと上書き
$message = $error->get_message('Validation failed for field :label.');</code></pre>
</td>
</tr>
</tbody>
</table>
</article>
</section>
</div>
<footer>
<p>
© FuelPHP Development Team 2010-2016 - <a href="http://fuelphp.com">FuelPHP</a> is released under the MIT license.
[ <a href="https://github.com/fuel/docs/commits/1.8/develop/classes/validation/errors.html">原文コミット履歴</a> | <a href="https://github.com/NEKOGET/FuelPHP_docs_jp/commits/1.8/develop_japanese/classes/validation/errors.html">翻訳コミット履歴</a> | <a href="https://github.com/NEKOGET/FuelPHP_docs_jp/blob/1.8/develop_japanese/classes/validation/errors.html">GitHubで修正</a> ]
</p>
</footer>
</div>
</body>
</html>