@kirill-93

Можно ли в Symfony валидировать число?

Мне необходимо добавить проверку на число.
/**
     * @var int|null
     *
     * @Assert\NotBlank
     * @Serializer\Type(name="integer")
     */
    private ?int $order = null;


Код выше сначала преобразует входные данные к число, а затем проверяет. Это значит, что я могу передать пустую строку, false или пустой массив и оно благополучно приведется к числу. Можно ли как-то проверять, что пользователь передает именно число?
  • Вопрос задан
  • 143 просмотра
Решения вопроса 2
@sl0
@Assert\Type(type="integer")
Соответственно в форме надо указывать IntegerType
Ответ написан
Комментировать
myks92
@myks92
Нашёл решение — пометь вопрос ответом!
Используйте поддержку null значений с помощью allowNull
@Assert\NotBlank(allowNull=true) Разные типы можно валидировать через @Assert\Type(type="integer")
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 1
@galliard
Нужно сменить тайпхинт с int на string, иначе передаваемое пользователем значение будет конвертировано в int еще до начала валидации и вы никак не узнаете, что там передавал пользователь изначально.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы