양식에 2 개의 텍스트 필드가 있습니다.Zend_Form - 양식 제출 후 addValidator하는 방법
- TextFieldA -
- TextFieldB 필요하지 않습니다 - 사용자가 양식, TextFielA의 값이 비어 있지 않은 경우 어떻게 TextFieldB에 (사실) 검증/setRequired를 추가를 제출 한 후
을 필요하지?
양식에 2 개의 텍스트 필드가 있습니다.Zend_Form - 양식 제출 후 addValidator하는 방법
을 필요하지?
@ Marcin의 아이디어 외에 두 가지 접근법이 있습니다.
는 조건부 형태의 preValidate()
방법을 작성 및 컨트롤러를 호출하여 해당 요소에 setRequired()
를 호출합니다. [@Marcin과 똑같은 생각이지만 컨트롤러 자체를 더 가볍게 유지하면서 양식 자체에 밀어 넣었다]
ConditionallyRequired
과 같은 사용자 정의 유효성 검사기를 작성하면 "다른 필드의 필드 이름 ". 그런 다음이 유효성 검사기를 각 요소에 연결하고 "다른"요소의 이름으로 구성합니다. 그런 다음 유효성 검사기의 isValid($value, $context)
메서드에서 이 비어 있지 않은 경우 $value
을 조건부로 테스트합니다.
다음과 같이 할 수있는 :
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
}
}
기본적으로, 당신은 포스트 후 유효성 검사기를 추가 할 수 있지만 형태가 확인되기 전에. 희망이 도움이됩니다.