我有一个包含多个字段的实体。其中之一正在表单提交后进行验证,如下所示:
/**
* @var integer $anzahl
*
* @ORM\Column(name="anzahl", type="integer")
* @Assert\NotBlank(message="Bitte geben Sie eine Kistenanzahl an.")
* @Assert\Type(type="numeric", message="Die Kistenanzahl muss eine Zahl sein.")
* @Assert\Min(limit="1", message="Sie müssen mindestens eine Kiste suchen oder anbieten.")
*/
private $anzahl;
我在使用此解决方案时遇到两个问题:
只应接受大于零的整数值。但是,此验证也接受浮点数/ double 数。但是,如果我更改
@Assert\Type(type="numeric")
至 @Assert\Type(type="integer")
没有输入被验证为真。如何验证我的输入为整数值?另一个问题是,在输入一个明显无效的值(如一串字母)后,我不仅收到用于类型验证的德语错误消息,还收到英文消息“此值应该是一个有效数字”。此消息来自何处,我该如何摆脱它?
最佳答案
你应该使用:
@Assert\Type(type="integer")
但是要小心,您应该将它与
IntegerType
一起使用。 ,不是 NumberType
或 TextType
:Symfony\Component\Form\Extension\Core\Type\IntegerType
IntegerType
与 NumberType
相同除了它集成了正确的 data transformer .
关于验证来自表单的整数输入,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10470735/