Fuelphp:バリデーションのルールを追加する

Fuelphpで用意されているバリデーションのルール以外に
自分で作成したバリデーションを追加したい場合があります。

コアクラス拡張することによって、新しいバリデーションのルールを作成することができます。

今回はFuelphpValidationクラス拡張し、バリデーションのルールを追加する方法をメモします。


バリデーションのルールを追加する方法

「fuel/app/classes」に「myvalidation.php」を作成します。

作成した「myvalidation.php」に追加したいバリデーションのルールを記述します。
下記は半角英数字チェックを追加した場合です。
追加する時は「_validation_」プレフィックスを付けて作成します。

<?php
class MyValidation
{
    // 半角英数字チェック
    public static function _validation_alphanum($data)
    {
        if(!empty($data)) {
            if (preg_match("/^[a-zA-Z0-9]+$/", $data)) {
                return true;
            }
            else {
                return false;
            }
        }
        return true;
    }
}

作成したバリデーションを使用する場合は下記のように記述します。
「add_callable()」で作成したバリデーションのクラスを読び出します。
後は「add_rule()」に作成したバリデーションを記述します。

$validation = \Validation::forge();
$validation->add_callable('myvalidation');

$validation->add('id', 'ID')
	->add_rule('required')
	->add_rule('alphanum');
$validation->run();

エラーメッセージを設定する場合は「fuel/app/lang/ja/validation.php」に新しいエラーメッセージを追加します。

return array(
	'alphanum' => ':labelは、半角英数字で入力してください。',
);