我想在symfony 1.4中创建多级嵌入表单。
我有三种形式:
1 - 问题表格, 2 - 选项形式和 3 - 回答表格。
其中,一个问题有很多选项字段,一个选项有很多答案字段。
当我尝试在选项条件中添加一个字段时,通过使用ajax呈现答案字段的HTML并尝试保存表单,那时我收到错误意外的额外表单字段名为“1”
我分别在问答表格和答案表格中填写了选项表格。
提交表单后会产生以下错误:
pick_type_option [0 [pick_type_answers [Unexpected extra form field named "1".]]]
任何人都可以帮我找出解决这个问题的方法。
高级谢谢
答案 0 :(得分:0)
由于未知在构建表单期间会有多少选项表单(在configure()
内,您必须覆盖bind()
方法并根据需要添加多个:
class QuestionForm extends sfForm {
public function configure() {
$this->embedFormArray('question', new OptionForm);
}
private $formArray = array();
public function embedFormArray($name, \sfForm $form, $decorator = null, $innerDecorator = null, $options = array(), $attributes = array(), $labels = array()) {
$this->formArray[] = array($name, $form, $decorator, $innerDecorator, $options, $attributes, $labels);
}
public function bind(array $taintedValues = null, array $taintedFiles = null) {
foreach($this->formArray as $fa) {
$c = (isset($taintedValues[$fa[0]]) ? count($taintedValues[$fa[0]]) : 0);
array_splice($fa, 2, 0, [$c]);
call_user_func_array(array($this, 'embedFormForEach'), $fa);
}
return parent::bind($taintedValues, $taintedFiles);
}
}