代码之家  ›  专栏  ›  技术社区  ›  MehdiB

Symfony-整数类型字段中的十进制数不会导致验证错误

  •  1
  • MehdiB  · 技术社区  · 8 年前

    /**
    * @Assert\NotBlank(groups={"group1"})
    * @Assert\Type(type="integer", groups={"group1"})
    * @Assert\Range(min=0, groups={"group1"})
    * @ORM\Column(type="integer")
    */
    private $cableCount;
    

    这是表单类型中的相应字段:

    $builder->add('cableCount', IntegerType::class, [
         'label' => 'Cable Count',
         'required' => true
    ]);
    

    2 回复  |  直到 8 年前
        1
  •  3
  •   Jason Roman    8 年前

    Symfony的 IntegerType automatically round 不管你给它发了多少。在浏览器端,如果您使用 整数类型

    为了得到你想要的,你应该使用 NumberType . 你的 @Assert\Type(type="integer", groups={"group1"}) 然后将在服务器上运行,如果您提交非整数,则会出现相应的错误。

    数字类型

    {%- block number_widget -%}
        {%- set type = form.vars.attr['int'] is defined and form.vars.attr['int']
            ? 'number'
            : type|default('text')
        -%}
        {{ block('form_widget_simple') }}
    {%- endblock number_widget -%}
    

    然后在表单类型中指定 attr 像这样:

    $builder->add('cableCount', NumberType::class, [
        'label' => 'Cable Count',
        'required' => true,
        'attr' => [
            'int' => true,
        ]
    ]);
    
        2
  •  0
  •   A. Atallah    8 年前

    /** @Assert\Regex(pattern="/^\d*$/") */
    

    编辑:正如@JasonRoman所提到的,你首先必须处理 IntegerType 谁会自动将您的输入舍入。

    推荐文章