这是我的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' )
);
答案 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;
}
}
更多信息: