我需要对字段进行条件验证:如果other_field = 1
,则this_field = notBlank
。我找不到这样做的方法。我的表类中的验证器:
public function validationDefault(Validator $validator) {
$validator->allowEmpty('inst_name');
$validator->add('inst_name', [
'notEmpty' => [
'rule' => 'checkInstName',
'provider' => 'table',
'message' => 'Please entar a name.'
],
'maxLength' => [
'rule' => ['maxLength', 120],
'message' => 'Name must not exceed 120 character length.'
]
]);
return $validator;
}
public function checkInstName($value, array $context) {
if ($context['data']['named_inst'] == 1) {
if ($value !== '' && $value !== null) {
return true;
} else {
return false;
}
} else {
return true;
}
}
这里的问题是,如果我在方法的开始注意到字段可以为空,当输入的值为空时,Cake不会运行我的任何验证,因为它是空的,并且是允许的。如果我没有注意到字段可以为空,Cake只是在我的自定义验证之前运行“notEmpty”验证,并在此字段为空时始终输出“This field cannot be left empty”。
我如何让Cake通过我的条件“notEmpty”验证?
我确实尝试了带有“on”条件的验证规则,结果相同。
1条答案
按热度按时间wgeznvg71#
成功测试,这可能会帮助你和其他人。CakePHP 3.*
在本例中,
Event Date
不能为空if position = 1
。您必须将此条件设置为if (!empty($context['data']['position']))
,因为$context['data']['position']
值只有在用户单击提交按钮后才会存在。否则,您将得到notice error
。