Я пытаюсь использовать правило сравнения но, кажется, что-то упустил или не делает это правильно. По сути, мне нужна проверка, чтобы проверить, что значение маленький размер меньше или равно Большой размер.
Но это не работает, в настоящее время я получаю сообщение об ошибке независимо от размеров.
в Таблица:
...
$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;
}
Некоторая помощь в этом будет высоко ценится.
Вы не можете использовать встроенный 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.'
]);
Вы можете использовать метод 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.'
]);