ZF2注释验证器NotEmpty和Int不工作?

时间:2014-07-04 09:39:23

标签: forms zend-framework zend-framework2 zend-validate

我正在从一个实体在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输入中输入一个字符串,我可以将两个字段留空。为什么这不起作用,为什么当我将字段留空时没有错误消息?

1 个答案:

答案 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;   
相关问题