$twoform = new TwoForm;
$this->embedForm('twoform', $twoform);
if($value == false) {
// unembedForm twoform HOW?
}
如果$value == false
然后表单twoform
未提交且未添加到数据库,我该如何制作?取消设置字段不起作用,因为表单正在发送,但它具有NULL
值。
答案 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'])。