#php #symfony
#php #symfony
Вопрос:
У меня есть значение, которое может быть либо логическим значением, либо int, либо string. В зависимости от типа необходимо выполнить дополнительную проверку — например: в случае, если значение равно true
, Type
проверка является единственным применяемым ограничением, но если значение равно 3
, я также хочу применить Range
ограничение.
Что-то вроде
$this->validator->validate($value, [new Type(['int', 'string', 'boolean'], new Range(['min' => 0, 'max' => 2));
Не работает, потому что каждое значение проверяется на наличие правильного диапазона, что бессмысленно, если значение имеет что-то вроде "true"
или false
.
Комментарии:
1. Сначала вы должны проверить тип значения, а затем: установите правильную группу проверки или добавьте ограничения вручную, зависит от этой проверки.
2. или создайте пользовательскую проверку для вашего варианта использования
3. На всякий случай, если вам не хватает какой-то ключевой концепции в symfony form data transformer, зачем вам 3 типа в типе формы? (это может помочь нам найти простое решение)
4. Формы нет, я использую валидатор для необработанных значений.