2014-07-04 39 views
0

我從一個實體構建ZF2中的一個表單,並且一切似乎都正常,除了我的兩個驗證器由於某種原因而被忽略。該實體看起來像這樣:ZF2註釋驗證程序NotEmpty和Int不工作?

/** 
    * @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輸入中輸入一個字符串,我可以將這兩個字段留空。爲什麼這不起作用,爲什麼當我離開字段爲空時沒有錯誤消息?

回答

2

好吧,這部分是因爲我是笨蛋。

問題1:notempty不工作是因爲我定義爲可爲空。似乎覆蓋「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;