以整数类型验证生日

时间:2012-03-29 09:33:33

标签: cakephp

这是我的InfoModel中的验证。 我想验证生日,但“生日”字段在DB中为int(8)。不幸的是,我没有权限修改MySQL数据库表。现在如何验证它?

生日示例:19800101

我尝试了这个,但我想不出将生日转换为字符串的解决方案。

var $validate = array(
    'job_id'        => array( 'rule' => 'notEmpty'              , 'message' => 'Text here' ),
    'sex_id'        => array( 'rule' => 'notEmpty'              , 'message' => 'Text here' ),
    'first_name'    => array( 'rule' => array( 'between', 1, 5 )    , 'message' => 'Text here' ),
    'last_name'     => array( 'rule' => array( 'between', 1, 5 )    , 'message' => '' ),
    //'birthday'        => array( 'rule' => 'some regex', 'message' => 'Text here' )
);

1 个答案:

答案 0 :(得分:1)

我相信只有正则表达式才能验证日期,包括闰年和一个月的总天数。

您可以添加自己的验证方法。试试这个:

public $validate = array(
        'birthday' => array(
            'rule' => 'validateBirthday',
            'message' => 'Wrong date of birthday'
        )
);

public function validateBirthday($check) {
    $value = array_values($check);
    $value = $value[0];

    if (preg_match('/^(\d{4})(\d{2})(\d{2})$/', $value, $matches)) {
        return checkdate($matches[2], $matches[3], $matches[1]);
    } else {
        return false;
    }
}

更多信息: