get_message($msg = false, $open = '', $close = '')
エラーメッセージを取得します。エラーメッセージは書き換え可能です。
静的 | いいえ | ||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
パラメータ |
|
||||||||||||||||
返り値 | string | ||||||||||||||||
例 |
|
Validation クラスは、ユーザ入力をバリデーションする際の手助けをします。 フォームの生成とバリデーションを同時にしたい場合は、代わりに Fieldset クラスを使用してください。
エラーは出力を柔軟に変えられる Validation_Error オブジェクトとして返されます。 もし Validation_Error オブジェクトが必要ないのであれば単純に Validation_Error オブジェクトを文字列型にキャストしてエラーメッセージを取得してください。
エラーメッセージは言語ファイル "validation.php" を設定することで自動的に読み込まれます。
バリデーションにおいて、エラーメッセージを操作する方法は 2 種類あります。
// バリデーションオブジェクトに対してエラーメッセージを変更する方法
$val->set_message('required', ':label フィールドは必須です。');
// 実際にこのフィールドがエラーかどうかに関われず、フィールドを指定してメッセージを変更する [訳注: エラーがない場合は $val->error('username') が false を返すため例外エラーになります]
echo $val->error('username')->get_message('ユーザー認証には :label フィールドを入力してください');
// username フィールドのバリデーションが失敗された場合、 "ユーザー認証には username フィールドを入力してください" が出力される
// それか、バリデーション未実行もしくはバリデーション成功の場合には何も出力しない
ここで気づいたと思いますが、エラーメッセージにはいくつか変数が用意されており、これらはフィールドのプロパティによって置換されます。 使用可能な変数を下記に列挙します
変数名 | 説明 |
---|---|
:field | フィールドの name 設定値に置換される |
:label | フィールドの label 設定値に置換される |
:value | バリデーションに失敗した value 値に置換される |
:rule | 失敗したバリデーションルール(名)に置換される。フレームワークが用意しているルール名はそのままで、 それ以外はコールバック関数名、または <クラス名>:<メソッド名> の形式で置換される。 (これはつまり、もし必要ならバリデーションルールを自作できるというヒントです) |
:param:1 | 最初の追加パラメータ (後述) に置換される。:param:2 は、その次の追加パラメータ。以降、同様。 |
コールバック形式のルールまたはクロージャーは全て、好きなように名前が付けらます。デフォルトでは次のように名前付けされます。
もし独自に名前を付けたい場合は下記のようなことが出来ます。
// 入力された値が奇数かどうかをチェックするルールを追加
// メソッド ->set_message('odd', ':label は奇数ではありません') とペアで使われることでしょう。(または、冒頭のエラーメッセージ用言語ファイルに 'odd' キーを追加しても良いです)
$field->add_rule(array('odd' => function($val) { return (bool) ($val % 2); }));
バリデーションはエラーオブジェクト(実際はバリデーション中に投げられる例外)を返します。 それらオブジェクトは実際のメッセージを取得する必要に応じて文字列型にキャストすることもできますし、 オブジェクトのままでエラー内容のメタデータを取得するのにも使えます。
$error->field
はエラーを起こした Fieldset_Field
オブジェクトへの
参照
$error->value
バリデートが失敗した値
$error->rule
失敗したバリデーションルールの名前。
基本的にバリデーションルールとして渡された文字列になりますが、
独自に名前付けされた場合には別の文字列になる場合もあります。
'Class::method'
, array('Class', 'method')
または、
array($object, 'method')
などのコールバックとして渡された場合はシンプルに、
'Classname:methodname'
という形式になります。
バリデーションルールに渡された追加パラメータになります。
例えば、->add_rule('max_length', 25)
をした場合は、array(25)
というようになります。
エラーメッセージを取得します。エラーメッセージは書き換え可能です。
静的 | いいえ | ||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
パラメータ |
|
||||||||||||||||
返り値 | string | ||||||||||||||||
例 |
|