FuelPHP Validation

フォームの検証を行うには、まず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>';
  }
}

Validationエラーメッセージの日本語化

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の値と等しければ成功する。
$strictfalseの場合、==で比較する。
$stricttrueの場合、===で比較する。
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

valid_stringに指定可能な文字種は次のとおり。

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)

$rule
メッセージを割り当てるルールの名前
$message
ルールへのメッセージ分

エラーメッセージは変数が用意されており、これらはフィールドのプロパティによって置き換えられる。

:field フィールドのname設定値
:label フィールドのlabel設定値
:value バリデーションに失敗したvalue値
:rule 失敗したバリデーションルール名
:param:n n番目の追加パラメータ

検証規則にはPHP標準関数も使える。