输入验证表单 Symfony

Input validating forms Symfony

我在 Symfony 表单中有一个 Integer 字段,它代表数量——当然它应该不能传递等于或小于 0 的值,所以我在 Entity 和 Form 中验证了表单。

但是 - 只有当表格已经发送时它才会被验证。是否有任何内置方法来验证输入的表单?我知道我可能需要编写自己的 JS 函数来提供此功能,但我不想重复别人的工作:)

找到解决方案。

要在 HTML 端验证 Symfony 表单,您只需在输入字段中添加一个属性,参考:https://www.w3schools.com/htmL/html_form_attributes.asp

因此,您的表单字段应如下所示:

->add('quantity', IntegerType::class, ['label' => false,
       'constraints' => new GreaterThan(array('value' => 0)),                
       'attr' => array(
            'min'   => '0',
        )
     ])

一点补充,如果你想确保用户只能输入一个数字,你可以将这段 js 添加到你的代码中。

->add('quantity', NumberType::class, [ 'attr' => 
[
'oninput' => "this.value = this.value.replace(/[^0-9]/g, '').replace(/(\..*)\./g, '');"
] ])

在您的输入中使用 pattern 和 min。 HTML 只要模式不匹配就应该阻止表单提交。 (小心,如​​果您使用 Javascript/Ajax 提交,不会阻止提交)

$builder->add('input_name', TextType::class, array(
    'attr'=>array(
        'pattern'=>'^[1-9][0-9]*' // 1 and above
        'min'=>'1'
    )
));

我正在使用 TextType 删除输入中的箭头。 如果您想保留它们,请使用 NumberType。