2016-11-29 5 views
3

Symfony 3에서는 더 이상 cascade_validation을 사용할 수 없습니다. 그래서 타입에 대한 Assert를 만들어야합니다. 그러나 작동하지 않는다. 필드는 BLANK이지만 Assert는 NOtBlank라고해도 유효하다. Participants 클래스가 있고 참가자 모델을 확인할 때 Adults ArrayCollection을 확인하려고합니다.Symfony : ArrayCollection에 대한 Assert/Validation 사용 방법

//Participant Model 
    /** 
     * @var ArrayCollection 
     * @Assert\All({ 
     *  @Assert\Type(type="My\WebsiteBundle\Model\Adult"), 
     * }) 
     */ 
     protected $adults; 

//Adult Model 
    class Adult 
    { 
     /** 
     * @var string 
     * 
    * @Assert\NotBlank() 
    */ 
    protected $salutation; 

    /** 
    * @var string 
    * 
    * @Assert\NotBlank() 
    */ 
    protected $firstname; 

    /** 
    * @var string 
    * 
    * @Assert\NotBlank() 
    */ 
    protected $lastname; 

답변

3

당신은 문서 예를 들어

여기 http://symfony.com/doc/current/reference/constraints/Valid.html 설명 된대로 유효 assetion 사용해야합니다

/** 
    * @var ArrayCollection 
    * 
    * @Assert\All({ 
    *  @Assert\Type(type="My\WebsiteBundle\Model\Adult"), 
    * }) 
    * @Assert\Valid 
    */ 
    protected $adults; 

희망

+0

가 이미이 글을 읽을이 도움에 아무 대답이 없다 이 작업은 ArrayCollection에서 수행하십시오. – Zwen2012

+0

Hi @ Zwen2012이 유효성 검사기에는'traverse'라는 옵션이 있습니다. doc에서 : _이 제약 조건이 객체의 배열을 보유하는 속성에 적용되면이 배열의 각 객체는이 옵션이 true로 설정된 경우에만 유효성이 검사됩니다. _ – Matteo

+0

OK, 예를들시겠습니까? 그것처럼?/** * @var의 ArrayCollection에 * @Assert \ 모든 ({어설 \ 트래버스(), * @Assert \ 유형 (유형 @ = "내 \ WebsiteBundle이 모델 \ 체크 아웃 \ 성인 \"), *}) */ 보호 된 $ 성인; – Zwen2012