SymfonyForm에 1 : n embedForm (s)이 있습니다. 기본 폼과 embedForm 클래스는 조건부 유효성 검사를 구현하는 자체 PreValidation을가집니다. EmbedForm 클래스의 일부는 다음과 같습니다symfony 1.4에서 sfValidatorCallback을 사용하는 embedForm에 대한 PreValidation
private function configurePreValidators() {
$validator = new sfValidatorCallback(array('callback'=> array($this, 'preValidation')));
$this->getValidatorSchema()->setPreValidator(new sfValidatorOr(array($validator)));
}
public function preValidation(sfValidatorCallback $validator, array $values){
...
$this->getValidator(self::SOME_FIELD)->setOption('required', false);
...
}
public function configure() {
...
$this->configurePreValidators();
parent::configure();
}
기본 폼의 prevalidation이 유사하다.
양식을 제출하면 주 양식 유효성 검사가 정상적으로 작동합니다.
embed-form에서는 embedForm의 preValidation에서 setOption ('required', false)으로 명시 적으로 설정했지만 "SOME_FIELD"는 필수 유효성 검사 오류를 가져옵니다.
embedForm에서 사전 유효성 검사를 사용할 때 고려해야 할 것이 있습니까? mergePreValidator은 어떻습니까? 그것에 관한 어떤 힌트?
미리 감사드립니다.
설명해 주셔서 감사합니다 ... – hasentopf
이것은 내 최상위 양식 클래스에서 도움이되지 않습니까? foreach ($ this-> getEmbeddedForm ('my_embeded_forms') -> getEmbeddedForms() $ form_id => $ form) { $ this-> mergePreValidator ($ form-> getValidatorSchema()); } ??? – hasentopf
아니요, sfForm :: embedForm이 이미 위에 붙여 넣은 코드의 스키마를 병합합니다. preValidators는 단순히 잘못된 유효성 검사기 인스턴스를 수정하는 것입니다. –