Проверка Symfony — Условные ограничения

#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. Формы нет, я использую валидатор для необработанных значений.