【FuelPHP】カスタムバリデーション要点まとめ

独自のバリデーションをかけたい場合の要点まとめです。

1. 自作バリデーションクラス/メソッドを作る

バリデーション用クラスを用意します。
FuelPHPのルールに従い、ファイル名とファイル位置に応じたクラス名とします。

fuel/app/classes/helper/myvalidation.php

<?
class Helper_MyValidation
{
    /**
     * 全角カタカナのみかどうかのバリデーション
     */
    public static function _validation_katakana($val, $options=null)
    {
        mb_regex_encoding("UTF-8");
        return preg_match("/^[ァ-ヶー]+$/u", $val) === 1;
    }
}

ポイント:
● メソッド名はプレフィックス「_validation_」が必須
● 判定結果をtrue/falseで返してあげる

2. 呼ぶ

モデルのvalidate()内で次のように使用することができます。

<?
class Model_Hoge extends \Orm\Model
{
    .
    .
    .

    public static function validate($factory)
    {
        $val = Validation::forge($factory);
        $val->add_callable('Helper_MyValidation');

        $val->add_field('name', '名前', 'required|max_length[50]|katakana');
    }
    .
    .
    .
}

ポイント:
● add_callable()の引数に、先ほど作成したバリデーション用クラス名を与える
● 通常のバリデーションルールと同様にルール名を指定すればよい
※ ルール名=メソッド名からプレフィックスを取り除いたもの

3. エラーメッセージをカスタマイズする(任意)

自作バリデーションのエラーメッセージも指定することができます。
※言語設定が日本語である想定

fuel/app/lang/ja/validation.php

<?
return array(
    'katakana' => ':labelは全角カタカナで入力してね!',
);

ポイント:
● ここでも通常のバリデーションルールと同様にルール名を指定すればよい