Forms 在Symfony中提交表单后,如何切换哪些字段是必填字段?

Forms 在Symfony中提交表单后,如何切换哪些字段是必填字段?,forms,symfony1,Forms,Symfony1,我正在使用的系统是基于用户和慈善帐户的,每个人都有一个用户帐户,但是慈善机构有一个用户帐户和一个慈善记录,该记录与用户帐户绑定,用户id包含一些额外的字段 我需要一个登记表,允许人们以个人身份(只有一个用户帐户)或慈善机构(用户帐户+慈善记录)注册,因此我将慈善机构表格嵌入到我的用户登记表中,并在顶部添加了一个单选按钮问题,以了解用户注册的帐户类型 我需要的是,当用户表示他们希望慈善领域的慈善账户成为必填项时,以及当他们表示他们希望成为一个个体而不是一个个体时(当他们选择此项时,我用Javasc

我正在使用的系统是基于用户和慈善帐户的,每个人都有一个用户帐户,但是慈善机构有一个用户帐户和一个慈善记录,该记录与用户帐户绑定,用户id包含一些额外的字段

我需要一个登记表,允许人们以个人身份(只有一个用户帐户)或慈善机构(用户帐户+慈善记录)注册,因此我将慈善机构表格嵌入到我的用户登记表中,并在顶部添加了一个单选按钮问题,以了解用户注册的帐户类型

我需要的是,当用户表示他们希望慈善领域的慈善账户成为必填项时,以及当他们表示他们希望成为一个个体而不是一个个体时(当他们选择此项时,我用Javascript将其隐藏)

我尝试在用户选择慈善机构时运行此功能,但似乎不起作用:

$this->register_form->getEmbeddedForm('charity')->getValidator("name")->setOption("required", true)

有人能告诉我正确的方法是什么吗?

首先,最好将此逻辑保留在form类中,而不是在action中。第二,当嵌入表单时,它会将validatorschema复制到父表单,这就是为什么更改嵌入表单上的选项本身没有效果

另一种实现您正在尝试的方法是:

class myForm extends BaseForm {

  public function configure() {
    // set up widgets, validators etc
  }

  protected function doBind($values) {
    is (!empty($values['charity']['charityCheckbox']) {
      $this->validatorSchema['charity']['name']->setOption('required', true);
    }
    parent::doBind($values);
  }

}

我认为这是正确的,到底是什么让你说它不起作用?也许您在显示表单和保存对象时正在构建表单,但第二次没有这样做?谢谢,我知道必须有一种方法在表单中进行。