1:n の埋め込みフォームを持つ SymfonyForm があります。メイン フォームと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();
}
メイン フォームの事前検証も同様です。
フォームを送信すると、メイン フォームの事前検証が正常に機能します。
埋め込みフォームでは、「SOME_FIELD」は必要な検証エラーを取得しますが、埋め込みフォームの preValidation で明示的にsetOption('required', false)に設定しました。
埋め込みフォームで事前検証を使用するときに考慮しなければならないことはありますか? mergePreValidatorはどうですか?それについてのヒントはありますか?
前もって感謝します!