在Symfony中提交表单后,如何切换需要哪些字段?

时间:2011-02-08 16:36:26

标签: forms symfony1

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

我需要一个注册表单,允许人们注册为个人(仅使用用户帐户)或慈善机构(用户帐户+慈善记录),因此我已将慈善表单嵌入到我的用户注册表单中并添加顶部的单选按钮问题可以找出用户注册的帐户类型。

我需要的是,当用户表示他们想要慈善机构的慈善机构帐户成为必需时,以及当他们表示他们希望成为他们不是的个人时(我选择此时用Javascript隐藏它们)

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

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

任何人都可以让我知道这样做的正确方法是什么?

1 个答案:

答案 0 :(得分:0)

首先,将此逻辑保留在表单类中而不是在操作中执行它可能更好。其次,当嵌入表单时,它会将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);
  }

}