symfony 1.4中的多级嵌入形式

时间:2015-01-12 13:01:59

标签: symfony1 symfony-1.4 symfony-forms

我想在symfony 1.4中创建多级嵌入表单。

我有三种形式:

1 - 问题表格, 2 - 选项形式和 3 - 回答表格。

其中,一个问题有很多选项字段,一个选项有很多答案字段。

当我尝试在选项条件中添加一个字段时,通过使用ajax呈现答案字段的HTML并尝试保存表单,那时我收到错误意外的额外表单字段名为“1”

我分别在问答表格和答案表格中填写了选项表格。

提交表单后会产生以下错误:

pick_type_option [0 [pick_type_answers [Unexpected extra form field named "1".]]]

任何人都可以帮我找出解决这个问题的方法。

高级谢谢

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);
  }
}