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;
}