我有一个 SymfonyForm,它有 1:n embedForm(s)。主窗体和 embedForm 类有自己的 PreValidation,它实现了条件验证。EmbedForm 类的一部分如下所示:
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();
}
主窗体的预验证是类似的。
当我提交表单时,主表单预验证工作正常。
在 embed-Form 中,“SOME_FIELD”得到一个 required-validation-error,尽管我在 embedForm 的 preValidation 中将其显式设置为setOption('required', false)。
在 embedForm 中使用预验证时有什么需要考虑的吗?那么mergePreValidator呢?有什么提示吗?
提前致谢!