2016-06-07 5 views
2

Zend \ Db \ RowGateway와 유사한 객체의 유효성을 검사하기 위해 Symfony Validator Component를 사용하고 싶습니다. 이 클래스의 매우 간단한 예는 다음과 같습니다가상 클래스 속성 유효성 검사 (Zend Db RowGateway)

class Task 
{ 
    private $values; 
    public function __construct(array $values) 
    { 
     $this->values = $values; 
    } 

    public function __get($name) 
    { 
     return $this->values[$name]; 
    } 
} 

validation.yml :

Task: 
    properties: 
     name: 
      - NotBlank: ~ 

나는 다음과 같은 오류 얻을 작업의 인스턴스의 유효성을 검사 : 속성 이름이 클래스 존재하지 않습니다 Row_Place

+0

당신은 내가 당신이 –

+0

에 의해 @property 사용할 수 : 어떻게 예를 들어, 당신은 같은 검증을 정의 할 수 있습니다? – Matteo

+0

@AndreasDyballa에 대한 사용자 지정 유효성 검사기를 쓸 수 있다고 생각하는 PHPDoc –

답변

0

컬렉션 (배열)에서 기본 데이터의 유효성을 검사하려면 Collection constraint을 사용할 수 있습니다.

Task: 
    properties: 
     value: 
      - Collection: 
       fields: 
        name: 
         - Required 
          - NotBlank: ~ 

희망이 도움

+0

사실 작업의 값을 속성에 저장하는 것은 구현 세부 사항입니다. 유효성 검사기를 만들 때 신경 쓰지 않으려 고합니다 –

+0

안녕하세요 @ NikoSams 필요한 것은 이해하지만 Symfony Validator 구성 요소 [속성 확인] (https://github.com/ [doc] (http : // php)에 설명 된대로 __get magic method를 사용하여 마술처럼 접근 할 수있는 속성을 탐지 할 수없는 php 함수'property_exists'로 symfony/validator/blob/master/Mapping/PropertyMetadata.php # L41) .net/manual/en/function.property-exists.php) – Matteo

+0

네, 그 이유는 이것입니다. 사용자 정의 Validator \ MetadataFactory가이 작업을 수행 할 수는 있지만 어떻게 작동하는지 모르겠습니다 ... –