我正在尝试使用comparison rule但似乎缺少某些内容或者没有正确行事。基本上我需要验证来检查 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;
}
对此的一些帮助将非常感激。
答案 0 :(得分:5)
您无法使用内置comparison
规则来比较两个字段,您需要使用custom rule:
$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.'
]);
答案 1 :(得分:1)
您可以使用compareFields方法比较两个字段 https://api.cakephp.org/3.6/class-Cake.Validation.Validation.html#_compareFields
像:
->add('small_size', 'compareFields', [
'rule' => ['compareFields', 'small_size','big_siz', '<='],
'message' => 'Small size cannot be bigger than Big size.'
]);