2010-01-13 6 views
0

Symfony1을 사용하면 두 필드 중 하나가 양식에 채워지는 것을 확인할 수 있습니까? 그들은 필수 필드는 아니지만 두 필드 중 하나를 채우기 위해 사용자를 필요로합니다. 이것은 지금까지 내 시도했지만 작동하지 않습니다 : (에 필요한 즉 세트를 더 나은 방법이 있다면논리적 검증 Symfony 양식

$this->setValidator('phone', new sfValidatorAnd(
    array(
    new sfValidatorSchemaCompare('email', '==', ''), 
    new sfValidatorSchemaCompare('phone', '==', ''), 
), 
    array(), 
    array(
    'invalid' => 'El e-mail no tiene un formato correcto', 
    'required' => 'Campo obligatorio', 
) 
)); 

답변

3

두 개의 필드는 글로벌 검증 사용해야 비교 : http://www.symfony-project.org/forms/1_2/en/02-Form-Validation#chapter_02_global_validators합니다. 현재 접근 방식은 오류가 발생할 때 전화 필드를 항상 유효하지 않은 것으로 표시합니다. 당신이 가진 ValidatorOr을 사용해야합니다 귀하의 경우, 그래서 값이 유효한 경우 또한, 당신은 검증에 공급하는 조건에 해당 반환해야 = 비교를 다음과 같이! 데 도움이

$this->validatorSchema->setPostValidator(new sfValidatorOr(
    array(
    new sfValidatorSchemaCompare('email', '!=', ''), 
    new sfValidatorSchemaCompare('phone', '!=', ''), 
), 
    array(), 
    array('invalid' => 'Campo obligatorio') 
)); 

희망을.

+0

나는 그것을 시도하지만 결코 오류가 발생하지 않습니다. 레지스터를 만들지는 않지만 오류를 표시하지 않습니다. 오류를 어떻게 보여줄 수 있습니까? 덕분에 . – nebur85

+1

http://www.symfony-project.org/forms/1_2/en/03-Forms-for-web-Designers#chapter_03_sub_handling_global_errors $ form-> hasGlobalErrors()를 사용하여 $ form-> 렌더링 할 renderGlobalErrors(). 커스텀 렌더링을하고 싶다면 모든 글로벌 에러의 이름/메시지 쌍에 대해서도 $ form-> getGlobalErrors()를 반복 할 수 있습니다. – nortron

+0

Cyro, thanks. 감사합니다. 그것은 잘 작동 보인다 :) – nebur85

관련 문제