Тип числа сжимается со свойством Длина в Symfony? - PullRequest
0 голосов
/ 03 июня 2019

Чтобы избежать каких-либо регулярных выражений или кода, есть ли какие-либо ограничения для числовых типов с длиной свойства?

https://symfony.com/doc/current/reference/constraints.html

Только в том случае, если мне нужно проверить поле формы длянапример, числа между 10 и 20, есть ли что-то родное, что позволяет это делать?

Я думаю, правильный путь для типа чисел - это ограничение сравнения длины или диапазона.

Вот хитростькод, который я использую в своей форме (без сущности):

->add('phone', TextType::class, array(
    'constraints' => new Regex(['pattern' => '/^([0-9]{9,12}+)$/']),
    'label' => false, 
    'required' => 'required', 
    'attr' => array('class' => 'form-control form-control-lg validate')
))

1 Ответ

0 голосов
/ 03 июня 2019

Вы можете сделать что-то вроде этого:

$min = 9;
$max = 12;

->add('phone', NumberType::class, array(
    'constraints' => new Range([
        'min' => 10 ** ($min - 1),
        'max' => (10 ** $max) - 1,
        'minMessage' => "You need to enter at least $min characters",
        'maxMessage' => "You need to enter no more than $max characters"
    ]),
    'label' => false, 
    'required' => 'required', 
    'attr' => array('class' => 'form-control form-control-lg validate')
))

Это проверяет, что число длиной от 9 до 12 символов (включительно), используя наименьшее 9-значное число и 12-значное число в качестве границ.

Будьте осторожны, хотя при работе с телефонными номерами как с номерами, как правило, менее подвержены ошибкам использование строк.Поскольку вам не нужно рассчитывать с номерами телефонов, использование строк это нормально.С целым числом вы не можете поддерживать специальные символы, такие как «+», «/» и «-».Вы также рискуете столкнуться с переполнением.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...