2012年7月31日火曜日

独自のバリデーションで検証済みの値を変更する(FuelPHP)

独自のバリデーションを追加するやり方は以前にも書いたんですが
検証済みの値 $validation->validated() で取得する値を変更するやり方。

やりたかったのは日付チェック用のルールを作っておいて検証が成功した場合の戻り値を統一したい。
入力例:2012/7/31, 2012-07-31, 2012年7月31日
検証済み:2012-07-31

myvalidation.php
public static function _validation_valid_date($val) {
    // 検証を記述(省略)

    // 検証後
    // return true
    return date('Y-m-d', strtotime($val));
}

こうしておくと
// date = '2012年7月31日';

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

$val->add('date', '日付')
    ->add_rule('valid_date');

if ($val->run())
{
    echo $val->input('date');        // 結果:2012年7月31日
    echo $val->validated('date');    // 結果:2012-07-31
}


こんなやり方でいいのかな。。。
動いたからいいか

0 件のコメント:

コメントを投稿