Cakephp 自定义验证方法返回 False 但保存且不显示任何消息
Cakephp Custom Validation Method Returning False but Saves and Displays no Message
我在 ValidationDefault 下有以下验证器来检查 effective_until 日期是否在 effective_on 日期之后。如果为假,它应该显示消息。
$validator
->add('effective_until', 'custom', ['rule' => 'checkEffectiveDateRange', 'provider' => 'table', 'message' => 'The effective until date must come after the effective on date.']);
我在同一个 table 中有以下自定义函数,但即使我故意将 effective_until 日期设置为早于 effective_on 日期,它也会保存数据并且不会' t 显示验证错误消息。我是不是做错了什么?
public function checkEffectiveDateRange($check, $context)
{
if(array_key_exists('newRecord',$context))
{
return strtotime($context['data']['effective_on']) < strtotime($check);
}
else
{
return strtotime($context['effective_on']) < strtotime($check);
}
}
对于可能需要这个的任何人,我通过将验证器更改为以下解决了这个问题
验证者
public function validationDefault(Validator $validator): Validator
{
$validator
->add('effective_until', 'custom',
['rule' => function($check, $context) {
if($this->checkEffectiveDateRange($check, $context)) {
return true;
}
return false;
},
'message' => 'The effective until date must come after the effective on date.']);
return $validator;
}
我在 ValidationDefault 下有以下验证器来检查 effective_until 日期是否在 effective_on 日期之后。如果为假,它应该显示消息。
$validator
->add('effective_until', 'custom', ['rule' => 'checkEffectiveDateRange', 'provider' => 'table', 'message' => 'The effective until date must come after the effective on date.']);
我在同一个 table 中有以下自定义函数,但即使我故意将 effective_until 日期设置为早于 effective_on 日期,它也会保存数据并且不会' t 显示验证错误消息。我是不是做错了什么?
public function checkEffectiveDateRange($check, $context)
{
if(array_key_exists('newRecord',$context))
{
return strtotime($context['data']['effective_on']) < strtotime($check);
}
else
{
return strtotime($context['effective_on']) < strtotime($check);
}
}
对于可能需要这个的任何人,我通过将验证器更改为以下解决了这个问题
验证者
public function validationDefault(Validator $validator): Validator
{
$validator
->add('effective_until', 'custom',
['rule' => function($check, $context) {
if($this->checkEffectiveDateRange($check, $context)) {
return true;
}
return false;
},
'message' => 'The effective until date must come after the effective on date.']);
return $validator;
}