2013-12-10 5 views
0

이름, 로그인 및 이메일의 세 가지 요소가있는 양식이 있습니다. validation.yml에서 내가 가진 :양식 유효성 검사 - 그룹 OR 조건

Mark\UserBundle\Entity\User: 
    properties: 
     name: 
      - NotBlank: ~ 
     login: 
      - NotBlank: ~ 
     email: 
      - Email: ~ 
      - NotBlank: ~ 

그것은 작동이 name 필요한 login 있습니다. 대신 name 또는 login이 필요합니다. email은 항상 필요합니다.

Symfony 1.4에서 나는 sfValidatorOr을 사용할 수 있습니다. Symfony 2에서 어떻게 만들 수 있습니까?

답변

0

내가 대신 Callback 제약 조건을 사용하여이 문제를 해결해야한다고 생각 :

// ... 
use Symfony\Component\Validator\ExecutionContextInterface; 

class User 
{ 
    // ... 

    public function hasCorrectCreditials(ExecutionContextInterface $context) 
    { 
     $isBlank = function ($val) { 
      return null === $this->name || '' === $this->name; 
     }; 

     if ($isBlank($this->name)) { 
      if ($isBlank($this->login)) { 
       $context->addViolationAdd('login', 'Either name or login should not be blank'); 
      } 
     } 
    } 
} 
Mark\UserBundle\Entity\User: 
    constraints: 
     - Callback: { methods: [hasCorrectCreditials] } 
    properties: 
     email: 
      - Email: ~ 
      - NotBlank: ~