我正在从一个实体在ZF2中构建一个表单,一切似乎都运行正常,但我的验证器中有两个因某些原因被忽略了。实体看起来像这样:
/**
* @var string $name
*
* @ORM\Column(name="name", type="string", length=255, nullable=true)
* @Annotation\Attributes({"type":"text"})
* @Annotation\Validator({"name":"NotEmpty"}) // duplicate
* @Annotation\Options({"label":"Name:"})
*/
private $name;
/**
* @var integer $sort
*
* @ORM\Column(name="sort", type="integer")
* @Annotation\Attributes({"type":"text"})
* @Annotation\Validator({"name":"Int"})
* @Annotation\Validator({"name":"NotEmpty"})
* @Annotation\Options({"label":"Sort:"})
*/
private $sort;
然而,我可以提交没有任何价值观的表格。我可以在SORT输入中输入一个字符串,我可以将两个字段留空。为什么这不起作用,为什么当我将字段留空时没有错误消息?
答案 0 :(得分:2)
问题1:注意不起作用是因为我将nullable定义为true。似乎要覆盖“notempty”验证器。咄。
问题2:我仍然不知道为什么会起作用,但是如果我将列类型声明为字符串(而不是整数),则int验证会突然发挥作用。
所以这是正确的代码:
/**
* @var string $name
*
* @ORM\Column(name="name", type="string", length=255)
* @Annotation\Attributes({"type":"text"})
* @Annotation\Validator({"name":"NotEmpty"})
* @Annotation\Options({"label":"Name:"})
*/
private $name;
/**
* @var integer $sort
*
* @ORM\Column(name="sort", type="string")
* @Annotation\Attributes({"type":"text"})
* @Annotation\Validator({"name":"Int"})
* @Annotation\Validator({"name":"NotEmpty"})
* @Annotation\Options({"label":"Sort:"})
*/
private $sort;