#cakephp #cakephp-3.x #cakephp-3.7
#cakephp #cakephp-3.x #cakephp-3.7
Вопрос:
У меня есть таблица с 5 логическими столбцами. Я хочу заставить пользователя выбрать хотя бы одно. Есть ли способ сделать это, используя объект CakePHP $validator
в таблице PHP?
Я могу сделать это в контроллере достаточно просто, но использование встроенного материала кажется менее неправильным. Мне ничего не бросается в глаза в документах. .
Пример контроллера:
if (false === $val1 === $val2 === $val3 === $val4 === $val5){
//return with error
}
Ответ №1:
Казалось бы, это ситуация для правила, а не для проверки.
public function buildRules(RulesChecker $rules) {
$rules->add(function (EntityInterface $entity, Array $options) {
return $entity->val1 || $entity->val2 || $entity->val3 || $entity->val4 || $entity->val5;
}, 'selectOne', [
'errorField' => 'val1',
'message' => __('You must select at least one of these fields.'),
]);
return $rules;
}