输入验证表单 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。
我在 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。