2

我的模型中有以下验证规则:

'dob' => array(
            'required' => array(
                'rule' => array('notEmpty'),
                'message' => 'Date of Birth is required'
            ),
            'age' => array(
                'rule' => array('comparison', '>=', 13),
                'message' => 'You must be over 13 years old'
            )
        )

我想要实现的是验证用户是否超过 13 岁......

日期是这样创建的:

<?php echo $this->Form->input('Profile.dob', array('label' => 'Date of Birth'
                                        , 'dateFormat' => 'DMY'
                                        , 'minYear' => date('Y') - 110
                                        , 'maxYear' => date('Y') - 13)); ?>

我该怎么做呢?由于保存的数据是日期而不是整数,所以我的比较不起作用......在这里寻找最简单的解决方案而不回复插件或其他外部资产,如果可能的话,只需一些简单的代码。

谢谢。

编辑:所以根据下面的评论,我添加了:

public function checkDOB($check) {
        return strtotime($check['dob']) < strtotime();
    }

但是我应该在 strtotime 中输入什么来检查年龄是否高于或等于 13?

4

1 回答 1

5

在您的模型中创建自定义验证规则:

public function checkOver13($check) {
  $bday = strtotime($check['dob']);
  if (time() < strtotime('+13 years', $bday)) return false;
  return true;
}

这使用了strtotime的一个简洁功能,可以让您轻松地在特定日期进行日期计算。

要使用规则:

'dob' => array(
  'age' => array(
    'rule' => 'checkOver13',
    'message' => 'You must be over 13 years old'
  )
)
于 2012-07-20T22:58:10.067 回答