Php 如何在symfony中取消嵌入表单?

Php 如何在symfony中取消嵌入表单?,php,forms,symfony1,Php,Forms,Symfony1,如果$value==false那么表单twoform未提交且未添加到数据库中,我如何使其生效?取消设置字段不起作用,因为表单正在发送,但它有一个NULL值。您可以对取消设置表单执行此操作 unset($this->widgetSchema['twoForm']); 取消设置($this->validatorSchema['twoForm']); 取消设置($this->formFieldSchema['twoForm']) 但这并不能避免在cas中发布以前可见的表单。您可以替换验证器以忽略已发布

如果
$value==false
那么表单
twoform
未提交且未添加到数据库中,我如何使其生效?取消设置字段不起作用,因为表单正在发送,但它有一个
NULL
值。

您可以对取消设置表单执行此操作

unset($this->widgetSchema['twoForm']);
取消设置($this->validatorSchema['twoForm']);
取消设置($this->formFieldSchema['twoForm'])

但这并不能避免在cas中发布以前可见的表单。您可以替换验证器以忽略已发布的值。
$this->setValidator('twoForm',new sfValidatorPass())

如果给出的示例是完整的,如果$value==false,最好不要嵌入表单


数据库插入取决于数据保存到其中的方式(sfDoctrineForm?

我认为您只需要覆盖表单绑定方法:

$twoform = new TwoForm;

$this->embedForm('twoform', $twoform);

 if($value == false) {
  // unembedForm twoform  HOW?
}

此处$value可能是表单选项(使用$this->getOption('option_name')进行此操作)或post查询中的某些值(即$taintedValues['widget_name'])。

如何在数据库中插入数据?我想我的解决方案解决不了这个问题
public function bind(array $taintedValues = null, array $taintedFiles = null) {
  if ($value) {
    unset($this['twoForm']); // UNSET embedded form
  }
  parent::bind($taintedValues, $taintedFiles);
}