【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は全角カタカナで入力してね!', );
ポイント:
● ここでも通常のバリデーションルールと同様にルール名を指定すればよい