【问题标题】:Multi level embed form in symfony 1.4symfony 1.4 中的多级嵌入形式
【发布时间】:2015-03-10 06:10:00
【问题描述】:

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

我有三种形式:

1 - 问题表, 2 - 选项表格和 3 - 答案表格。

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

当我尝试通过使用 ajax 为答案字段呈现 HTML 并尝试保存表单来在选项条件中添加一个字段时,我收到错误 Unexpected extra form field named "1"

我分别在问题表单和选项表单中嵌入了选项表单。

提交表单后出现以下错误:

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

谁能帮我找出这个问题的解决方案。

在此致谢

【问题讨论】:

    标签: symfony1 symfony-1.4 symfony-forms


    【解决方案1】:

    由于不知道在构建表单期间会有多少个 Option 表单(在 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);
      }
    }
    

    【讨论】:

    • 嗨 Marek,感谢您的回复。我已经在选项表单和选项表单中嵌入了答案表单 -> 在问题表单中。当我尝试嵌入选项表单时,我没有遇到任何问题,因为答案字段会自动嵌入。但是,当我尝试直接嵌入直接回答表单字段时,我收到错误“pick_type_option [0 [pick_type_answers [Unexpected extra form field named “1”]]]”
    • 对不起,我不明白您所说的“尝试直接嵌入直接回答表单字段”是什么意思。也许如果你发布你的实际代码我会。
    猜你喜欢
    • 1970-01-01
    • 2011-05-27
    • 2011-07-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多