2014-12-02 1 views
1

유효성 검사 엔티티를 사용하거나 Yaml 또는 FormType에서 어떤 차이가 있습니까?FormType 또는 Entity/Yaml에서 유효성 검사 사용

형태 유형

.... 
    ->add('email', 'text', array (
        'constraints' => array (
         new Email(array('message' => 'error Email')) 
        ) 
       )) 
.... 

YAML

properties: 
    email: 
     - Email: 
      message: error Email. 

법인

{ 
    /** 
    * @Assert\Email(
    *  message = "error Email", 
    *) 
    */ 
    protected $email; 
} 

모든 이러한 방법은 동일합니다?

답변

2

그들은 동일하지 않습니다! 엔티티 유효성 검사 및 양식 유효성 검사가 뒤섞였습니다.

  • 엔티티 유효성 검사는 엔티티에 속합니다. 즉, 새 데이터가 양식이나 아약스 쿼리에서 왔는지 또는 일부 상수 데이터 만 설정했는지 여부는 중요하지 않습니다. 유효성 검사는 엔터티에 대한 유효성 검사를 호출하여 트리거됩니다. 참고 : 엔터티 유효성 검사는 양식 유효성 검사에서도 실행됩니다.
  • 폼 유효성 검사는 폼에 속합니다. 즉, $ form-> isValid()를 호출하여 양식 값의 유효성을 검사 할 수 있습니다. 그러나 이는 엔티티가 일관성이 있다는 것을 보장하지 않기 때문에 유효하지 않은 엔티티가 될 수 있습니다 (양식 만 해당).

이러한 이유로 심포니는 양식 검사기 대신 엔티티 유효성 검사를 사용할 것을 권장합니다.

그 외에도 annotation, yml, xml 또는 php 형식간에 차이가 없습니다. 우선 순위 만.

+0

고마워요! 이제 더 명확하게 – monkeyUser

2

동일한 유효성 제한 조건을 적용 할 것이라고 생각합니다.

필자는 내 관점에서 볼 때 가장 확실한 방법이므로 validation.yml에 모든 제약 조건을 적용하는 경향이 있습니다. 또한 번역과 더 호환됩니다.

하지만 모두 컨텍스트와 작업중인 프로젝트에 따라 다릅니다.

업데이트 : 리가의 항목을 읽은 후에 나는 그에 동의합니다. 끝 부분의 결과는 동일하지만 올바른 지점이 있습니다.

+0

감사합니다. :) – monkeyUser

0

entites에 적용되는 제약뿐만 아니라 formtype에 예를 들어

적용되도록 같은 validation.yml를 사용하는 방법이 있나요 기업에 대한 제목 필드는 formttype에 50charsm 도끼 길이, 제목 필드 등을하는 경우 잘.

그래서 우리는 formtype의 add-method에서 최대 길이를 지정하는 것을 피할 수 있습니다. 등 formtype 그래서 같은 constraitn (필수 최대 길이)에 엔티티 검증 제약 조건을 사용하는 방법

요약

에서

자동 적용됩니다?

관련 문제