【问题标题】:CakePHP validation form fieldCakePHP 验证表单字段
【发布时间】:2015-12-10 12:17:43
【问题描述】:
我正在使用 Cakephp (v3.0)。我有一个我想要的字段“num_max_intents”,它只需要大于 0 的值,而且我希望“日期”字段大于实际日期。
我的 validationDefault() 代码是下一个:
public function validationDefault(Validator $validator){
$validator->notEmpty('num_max_intents')
->notEmpty('package')
->notEmpty('date');
return $validator;
}
最简单的方法是什么?
【问题讨论】:
标签:
php
forms
validation
cakephp
【解决方案1】:
对于简单的解决方案,请使用range 验证器:
$validator->add(
'num_max_intents',
'valid',
['rule' => ['range', 0, PHP_INT_MAX]]
);
此验证器需要设置下限和上限,因此您必须在此处使用一些值。您可以在Cake\Validation\Validation 中找到所有验证器。
【解决方案2】:
您可以使用闭包作为自定义验证规则。如果规则有效,请记住返回true,如果失败则返回false。例如,要检查日期字段是否大于当前日期:-
public function validationDefault(Validator $validator){
$validator
->add('date', 'valid', ['rule' => function ($value) {
return $value > date('Y-m-d');
}]);
return $validator;
}
【解决方案3】:
要验证“日期”字段,我正在使用此代码:
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;
}
但是,当我在表单上选择的日期小于实际日期时,验证器无法正确运行并且不显示错误消息...怎么了?