2014-11-14 111 views
2

我使用Symfony的2.5和我的模型類如下:的Symfony驗證:一是產權約束,則類約束

/** 
* @UserAssert\UserPasswordReset 
*/ 
class ResetPassword { 

/** 
* @var string 
* @Assert\NotBlank() 
*/ 
public $username; 

/** 
* @var string 
* @Assert\NotBlank() 
* @Assert\Date 
*/ 
public $birthday; 

/** 
* @var string 
* @Assert\NotBlank() 
*/ 
public $plainSecurityAnswer; 


function __toString() 
{ 
    return $this->username . $this->birthday->format('Y-m-d H:i:s') . $this->plainSecurityAnswer; 
} 

}

這個模型映射到一個ResetFormType。 現在我的意圖:我怎麼說/配置,我首先想要通過屬性約束。如果所有屬性約束都被傳遞(例如沒有字段爲空),我想要調用@UserAssert \ UserPasswordReset。

目前,它始終驗證屬性和類約束。

問候++

回答

2

我想你可以使用一個GroupSequence Validator這樣做:

/** 
* @UserAssert\UserPasswordReset(groups={"PasswordReset"}) 
* @Assert\GroupSequence({"Default", "PasswordReset"}) 
*/ 
class ResetPassword 
{ 
    //---- 
} 

在這種模式下UserPasswordReset將默認斷言後才能生效。

在文檔中,您會發現一些使用組序列的實現示例..

+0

非常感謝!這就是我一直在尋找的。該死的我查閱文件,但重讀GroupSequences ..- .-接受你的答案。 – 2014-11-14 17:31:05

+0

很高興有幫助:-) – 2014-11-14 17:31:58