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

时间:2011-07-18 10:40:05

标签: php forms symfony1

$twoform = new TwoForm;

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

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

如果$value == false然后表单twoform未提交且未添加到数据库,我该如何制作?取消设置字段不起作用,因为表单正在发送,但它具有NULL值。

2 个答案:

答案 0 :(得分:0)

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

unset($this->widgetSchema['twoForm']); unset($this->validatorSchema['twoForm']); unset($this->formFieldSchema['twoForm']);

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

如果给出的例子是完整的,那么如果$ value == false

,则不能嵌入表单。

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

答案 1 :(得分:0)

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

public function bind(array $taintedValues = null, array $taintedFiles = null) {
  if ($value) {
    unset($this['twoForm']); // UNSET embedded form
  }
  parent::bind($taintedValues, $taintedFiles);
}

这里$ value可以是表单选项(对此使用$ this-> getOption('option_name'))或来自post查询的某些值(即$ taintedValues ['widget_name'])。