我正在使用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;
}
最简单的方法是什么?
答案 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;
}
但是,当我在表单上选择的日期少于实际日期时,验证程序无法正常运行,并且没有显示错误消息......出了什么问题?