验证来自表单的整数输入

标签 validation symfony

我有一个包含多个字段的实体。其中之一正在表单提交后进行验证,如下所示:

/**
 * @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 一起使用。 ,不是 NumberTypeTextType :
Symfony\Component\Form\Extension\Core\Type\IntegerType 
IntegerTypeNumberType 相同除了它集成了正确的 data transformer .

关于验证来自表单的整数输入,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10470735/

相关文章:

c - 使用 C 中的函数进行输入验证

java - 我需要对基于 Spring 的 Rest Web 服务进行验证

symfony - AWS Elastic Beanstalk 上的 .ebextensions 中的 chmod 失败

php - Symfony 不会自动增加 id

php - FOSRestBundle 仅监听前缀

validation - 如何使用 aurelia-validation 来排列项目

c# - 用于多个字段的 ASP.NET 验证器

java - 无法触发构造函数级别验证

symfony - 安全有作用 vs is_granted

php - Doctrine 未在 Doctrine :schema:update 上创建一对多关系