2011-04-30 3 views
3

양식에 2 개의 텍스트 필드가 있습니다.Zend_Form - 양식 제출 후 addValidator하는 방법

  1. TextFieldA -
  2. TextFieldB 필요하지 않습니다 - 사용자가 양식, TextFielA의 값이 비어 있지 않은 경우 어떻게 TextFieldB에 (사실) 검증/setRequired를 추가를 제출 한 후

을 필요하지?

답변

2

@ Marcin의 아이디어 외에 두 가지 접근법이 있습니다.

  1. 는 조건부 형태의 preValidate() 방법을 작성 및 컨트롤러를 호출하여 해당 요소에 setRequired()를 호출합니다. [@Marcin과 똑같은 생각이지만 컨트롤러 자체를 더 가볍게 유지하면서 양식 자체에 밀어 넣었다]

  2. ConditionallyRequired과 같은 사용자 정의 유효성 검사기를 작성하면 "다른 필드의 필드 이름 ". 그런 다음이 유효성 검사기를 각 요소에 연결하고 "다른"요소의 이름으로 구성합니다. 그런 다음 유효성 검사기의 isValid($value, $context) 메서드에서 이 비어 있지 않은 경우 $value을 조건부로 테스트합니다.

1

다음과 같이 할 수있는 :

if ($this->getRequest()->isPost()) { 

    $textFieldA = $yourForm->getElement('TextFieldA'); 
    $textFieldB = $yourForm->getElement('TextFieldB'); 

    if (!empty($_POST['TextFieldA'])) { 
     $textFieldB->setRequired(true); 
    } 

    if (!empty($_POST['TextFieldB'])) { 
     $textFieldA->setRequired(true); 
    }    

    if ($mainForm->isValid($_POST)) {     
     // process the form    
    } 
} 

기본적으로, 당신은 포스트 후 유효성 검사기를 추가 할 수 있지만 형태가 확인되기 전에. 희망이 도움이됩니다.

관련 문제