为了避免某些正则表达式或代码,具有属性长度的数字类型是否有任何约束?
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')
))
答案 0 :(得分:0)
您可以执行以下操作:
$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个字符(含)之间。
尽管在将电话号码作为号码类型处理时要小心,通常使用字符串代替它更容易出错。由于您不需要使用电话号码进行计算,因此可以使用字符串。如果使用整数,则不能支持特殊字符,例如“ +”,“ /”和“-”。您还冒着溢出的风险。