如何在CakePHP 3验证中逻辑比较值(数字)字段值

Daw*_*jee 1 php validation cakephp comparison-operators cakephp-3.0

我正在尝试使用比较规则,但似乎缺少某些东西或者做得不对.基本上我需要验证来检查small_size的值是否小于或等于big_size.

但这不起作用,我目前正在收到错误,无论大小.

表中:

     ...
     $validator
        ->add('small_size', 'valid', ['rule' => 'numeric'])
        ->requirePresence('small_size', 'create')
        ->notEmpty('small_size')
        ->add('small_size', 'comparison', [
            'rule' => ['comparison', 'big_size', '<='],
            'message' => 'Small size cannot be more than the Big size.'
        ]);
    return $validator;
}

public function buildRules(RulesChecker $rules)
{
    $rules->add($rules->existsIn(['Entity_id'], 'Entity'));
    return $rules;
}
Run Code Online (Sandbox Code Playgroud)

对此的一些帮助将非常感激.

Hol*_*olt 5

您不能使用内置comparison规则来比较两个字段,您需要使用自定义规则:

$validator->add('small_size', 'comparison', [
    'rule' => function ($value, $context) {
        return intval($value) <= intval($context['data']['big_size']) ;
    },
    'message' => 'Small size cannot be bigger than Big size.'
]);
Run Code Online (Sandbox Code Playgroud)