フォームの検証を行うには、まずValidationクラスのインスタンスを生成する。
$val = Validation::forge();
インスタンスを生成したら、検証規則を設定する。
$val->add_field('name', '名前', 'required');
$val->add_field('email', 'メールアドレス', 'valid_email');
$val->add_field('password', 'メールアドレス', 'min_length[4]|max_length[8]');
$val->add_field('password2', 'メールアドレス(確認用)', 'match_field["password"]');
空欄のフォームはrequired以外の検証結果が成功となる。
検証を実行するには、Validationオブジェクトのrunメソッドを実行する。
if ($val->run()) {
// 検証成功
} else {
// 検証失敗
foreach ($val->error() as $error) {
$out .= $error . '<br>';
}
}
FuelPHPの設定ファイル(APPPATH/config/config.php
)内で言語を設定することができる。
/**
* Localization & internationalization settings
*/
'language' => 'ja',
個々で設定した言語ごとにValidationエラーメッセージを作成できる。たとえば、言語を日本語(ja)に設定した場合、英語用のValidationエラーメッセージファイル(COREPATH/lang/en/validation.php
)を日本語用(APPPATH/lang/ja/validation.php
)にコピーし、メッセージを日本語用に編集する。
add_rule
メソッドで指定できるルールを次表に示す。
規則 | パラメータ | 説明 |
---|---|---|
exact_length |
$length |
値の文字数が$length で指定した文字数と等しければ成功する。 |
numeric_between |
$min_val, $max_val |
値が$min_val 以上、$max_val 以下の数値であれば成功する。数値ではない文字列は0とみなされる。 |
numeric_max |
$max_val |
値が$max_val 以下の数値であれば成功する。数値ではない文字列は0とみなされる。 |
numeric_min |
$min_val |
値が$min_val 以上の数値であれば成功する。数値ではない文字列は0とみなされる。 |
match_field |
$field |
$field に指定したフィールドの値と等しければ成功する。この規則を指定するフィールドより前に比較対象となるフィールドが規則に登録されている必要がある。 |
match_pattern |
$pattern |
$pattern で指定したPREF(Perlの正規表現)にマッチするかどうか。 |
match_value |
$compare, $strict = false
| $compare の値と等しければ成功する。$strict がfalse の場合、== で比較する。$strict がtrue の場合、=== で比較する。 |
max_length |
$length |
値の文字数が$length で指定した文字数以下であれば成功する。 |
min_length |
$length |
値の文字数が$length で指定した文字数以上であれば成功する。 |
required |
なし | 値が入力されていれば成功する。 |
required_with
| $fieldname |
$fieldname で指定したフィールドに値が入力されている場合、値が入力されていれば成功する。 |
valid_date |
$format, $strict = true |
値が有効な日付形式であれば成功する。$format が指定された場合、指定されたフォーマットに基づいて比較される。 |
valid_email |
なし | 値がメールアドレスとして正しい形式であれば成功する。 |
valid_emails |
$separator |
値がメールアドレスとして正しい形式であり、$separator で指定した文字で区切って列挙したものであれば成功する。 |
valid_ip | なし | 値がIPアドレスとして正しい形式であれば成功する。 |
valid_string |
$flags |
$flags に許可する文字種の配列を指定し、それ以外の文字が含まれていなければ成功する。指定可能な文字種は後述。 |
valid_url |
なし | 値がURLとして正しい形式であれば成功する。文字列がhttp:// 又はhttps:// で始まっている必要がある。 |
valid_string
に指定可能な文字種は次のとおり。
文字種 | 説明 |
---|---|
alpha |
アルファベット |
comma |
カンマ |
dashes |
- 及び_ |
dots |
ピリオド |
doublequotes |
2重引用符 |
lowercase |
小文字のアルファベット(alpha と併用)
|
newlines |
改行コード |
numeric |
数字 |
punctuation |
区切り文字(.,!?:; )
|
singlequotes |
単一引用符 |
spaces |
スペース |
tab |
タブ文字 |
uppercase |
大文字のアルファベット(alpha と併用)
|
utf8 |
正規表現にutf8修飾子を付ける |
valid_stringの使用例を示す。
$val = Validation::forge();
$val->add_field('name', '名前')
->add_rule('valid_string', array('alpha', 'numeric'));
Validationクラスでは、独自の関数を作成して検証規則にすることができる。独自の検証ロジックで検証に成功した場所はTRUE、失敗した場所はFALSEを返す関数を作成する。関数名には_validation_
という接頭辞を付ける。Validation::add_callback
メソッドで読み込む。
public static function _validation_foo($bar) {
// 検証処理
}
$val->add_callable('myvalidation');
$val->add('name', '名前')
->add_rule('foo');
function set_message($rule, $message)
エラーメッセージは変数が用意されており、これらはフィールドのプロパティによって置き換えられる。
:field | フィールドのname設定値 |
:label | フィールドのlabel設定値 |
:value | バリデーションに失敗したvalue値 |
:rule | 失敗したバリデーションルール名 |
:param:n | n番目の追加パラメータ |
検証規則にはPHP標準関数も使える。