我有一个duration
字段有时可以为空,有时不能,具体取决于表单发送的其他数据。所以我正在尝试在 CakePHP3 中进行自定义验证。
在我的桌子上我做了
public function validationDefault(Validator $validator)
{
$validator
->add('duration', 'durationOk', [
'rule' => 'isDurationOk',
'message' => 'duration is not OK',
'provider' => 'table'
]);
return $validator;
}
public function isDurationOk($value, $context)
{
// do some logic
return false; // Always return false, just for test
}
现在,当我设置持续时间字段的值时,我得到一个'duration is not OK'
错误(如预期的那样)。但是当我让值为空时,我得到一个'This field cannot be left empty'
错误。
所以我补充说:
->allowEmpty('duration');
但在这种情况下,当duration
为空时,我根本不会收到错误消息。
我做错了什么还是只是我不了解验证的工作原理?