2014-01-06 44 views
0

我對symfony組驗證有點困惑。symfony組驗證工作如何進行

假設我有這樣的代碼

* @NotBlank(groups={"A", "B", "C"}) 
*/ 
private $description; 

當我提交表單,那麼我手動進這樣

$this->validator->validate($object, groups={"F", "A","C"})

組現在我想知道symfony會怎麼做驗證

  1. 是否symfony檢查所有組即F,A,C應與A,B,C匹配,或者檢查是否存在來自F,A,C的任何組在定義的gorup'A,B,C'中。因此,如果有任何項目maces,然後它進行驗證

回答

2

如果您查看validate() method signature,您可能會明白,您不應該將$groups參數視爲允許您注入驗證組的參數。

它用於請求驗證者驗證給定對象某些約束組。

使用示例,

/* 
* @NotBlank(groups={"A", "B"}) 
*/ 
private $property1; 

/* 
* @NotBlank(groups={"C"}) 
*/ 
private $property2; 

/* 
* @NotBlank(groups={"B"}) 
*/ 
private $property3; 

然後,

$this->validator->validate($object, groups={"A", "C"}) 

將驗證您的property1 & property2NotBlank約束。

但是打電話時,

$this->validator->validate($object, groups={"A", "B"}) 

只有property1 & property3被驗證againt的NotBlank約束爲group C,則不會調用。

1

Symfony列出來自組F, A, C的所有約束並將它們應用於您的數據。如果一個約束在2個或更多組中,它將只應用一次。

因此,關於您的示例,應該應用$ description字段中的NotBlank約束。