CakePHP验证表单字段

时间:2015-12-10 12:17:43

标签: php forms validation cakephp

我正在使用Cakephp(v3.0)。我有一个字段" num_max_intents"我想要的只有大于0的值,我也想要#34; date"字段大于实际日期.. 我的validationDefault()代码是下一个:

public function validationDefault(Validator $validator){
    $validator->notEmpty('num_max_intents')
              ->notEmpty('package')
              ->notEmpty('date');
    return $validator;
}

最简单的方法是什么?

3 个答案:

答案 0 :(得分:1)

对于简单的解决方案,请使用range验证程序:

$validator->add(
    'num_max_intents', 
    'valid', 
    ['rule' => ['range', 0, PHP_INT_MAX]]
);

此验证器需要设置下限和上限,因此您必须在此处使用某个值。您可以在Cake\Validation\Validation中找到所有验证器。

答案 1 :(得分:0)

您可以将闭包用作自定义验证规则。请记住,如果规则有效,则返回true,如果失败则返回false。例如,要检查日期字段是否大于当前日期: -

public function validationDefault(Validator $validator){
    $validator
        ->add('date', 'valid', ['rule' => function ($value) {
            return $value > date('Y-m-d');
        }]);
    return $validator;
}

答案 2 :(得分:0)

验证" date"字段我使用此代码:

public function validationDefault(Validator $validator){
    $validator->add('date', 
                    'valid', [
                        'rule' => function ($value) {
                            return $value > date('Y-m-d'); },
                        'message' => 'Invalid date.'
                    ]
              )
              ->notEmpty('date');
    return $validator;
}

但是,当我在表单上选择的日期少于实际日期时,验证程序无法正常运行,并且没有显示错误消息......出了什么问题?