aswww log

エンジニアの技術録。アプリとかウェブとか

fuelPHP1.7で日付Validation関数(valid_date)の使用とサンプル

以前の記事fuelPHP1.6くらいで日付Validation関数独自実装では
日付の入力チェックvalid_dateの使い方がよくわからなくて思わず独自実装しちゃったけど改めて日付チェックする機会が訪れたのでもう一度使い方調べてみた。
なお、前回同様google先生に聞いても使用例とか出てこない模様。

というわけで大人しくfuel/core/classes/Validation.phpのソースを覗いてみた。そしたらvalid_dateの実態が見つかったよ

    public function _validation_valid_date($val, $format = null, $strict = true)
    {
        if ($this->_empty($val))
        {
            return true;
        }

        if ($format)
        {
            $parsed = date_parse_from_format($format, $val);
        }
        else{
       ・
       ・
       (略)

このdate_parse_from_formatって関数でチェックしてるみたい。
以下のように使えるんだって。

array date_parse_from_format ( string $format , string $date )

参考:http://www.php.net//manual/ja/function.date-parse-from-format.php

ここの$formatに指定するのは「DateTime::createFromFormat() が理解できるフォーマット。」らしい。

参考:http://www.php.net/manual/ja/datetime.createfromformat.php

サン プルをみてみるとフォーマットを'Y-m-d'とかで指定してるね。というわけで同じようにformatの指定を変えて見ると

        $val = Validation::forge();
        $val->add('date', '生年月日')->add_rule('required')
            ->add_rule('valid_date', 'Y-m-d');

無事できた!前回はフォーマットを'YYMMDD'とかサポートしてない形式で指定してたからうまくいなかなったんだね。独自実装しなくてもできるね!まあ勉強になったからよしとしよう。