2014-02-10 38 views
0

我想驗證validation.yml模式的集合字段內的實體,但它不起作用。我嘗試過兩種方式。Symfony 2.3:驗證收集字段內的實體

第一種方法是使用集合約束,但集合字段拋出一些字段丟失。

第二種方法(我認爲最好的方法)是嘗試使用「有效」約束來驗證集合中的每個對象,但這也不起作用。

在這兩種情況下,我都在默認表單選項中設置了「cascade_validation」。

那麼,我如何驗證集合字段內的實體?

有我的驗證代碼:

# 
# Edition 
# 
Talim\ActivityBundle\Entity\Edition: 
    properties: 
     activity: 
      - NotNull: ~ 
     accommodation: 
      - NotNull: 
     turns: 
      - Valid: ~ 
     services: 
      - Count: 
       min: 1 
     services: 
      - Count: 
       min: 1 
     childRatio: 
      - NotBlank: ~ 
      - Type: 
       type: integer 
      - GreaterThan: 
       value: 1 
     minAge: 
      - NotBlank: ~ 
      - Type: 
       type: integer 
      - GreaterThan: 
       value: 0 
     maxAge: 
      - NotBlank: ~ 
      - Type: 
       type: integer 
      - LessThan: 
       value: 35 
     specialNeeds: 
      - NotNull: ~ 
      - Type: 
       type: bool 
     largeFamily: 
      - NotNull: ~ 
      - Type: 
       type: bool 

# 
# Turn 
# 
Talim\ActivityBundle\Entity\Turn: 
    startAt: 
     - NotBlank: ~ 
     - Type: 
      type: string 
     - Date: ~ 
    endAt: 
     - NotBlank: ~ 
     - Type: 
      type: string 
     - Date: ~ 
    minPlaces: 
     - NotBlank: ~ 
     - Type: 
      type: string 
    totalPlaces: 
     - NotBlank: ~ 
     - Type: 
      type: integer 
     - GreaterThan: 
      value: 1 
+0

你還必須驗證註釋的地方在實體文件?您是否設置了其他驗證組? – Hast

+0

我會建議你,在你的實體中使用註釋,它會給你完美的結果。謝謝 – hizbul25

+0

你是說這是yaml的問題嗎?我在整個項目中使用它 – user3293331

回答

0

我在我的代碼中的錯誤:

Talim\ActivityBundle\Entity\Turn: 
    properties: # <--- I forgot this 
     startAt: 
     - NotBlank: ~ 
     - Type: 
      type: string 
     - Date: ~