Symfony1 Symfony 1.4中的嵌入式表单:为什么我必须使用包装器?

Symfony1 Symfony 1.4中的嵌入式表单:为什么我必须使用包装器?,symfony1,symfony-1.4,symfony-forms,Symfony1,Symfony 1.4,Symfony Forms,我正在构建一个表单,允许我使用symfony1.4同时编辑给定表的所有行。 为此,我使用了嵌入式表单。我的解决方案是可行的,但我想知道为什么我必须为我的嵌入表单使用包装器 这是我的密码: class FooCollectionForm extends BaseForm { public function configure() { $wrapperForm = new sfForm(); foreach ($this->getOption('bar') as

我正在构建一个表单,允许我使用symfony1.4同时编辑给定表的所有行。 为此,我使用了嵌入式表单。我的解决方案是可行的,但我想知道为什么我必须为我的嵌入表单使用包装器

这是我的密码:

class FooCollectionForm extends BaseForm
{
  public function configure()
  {    
    $wrapperForm = new sfForm();
    foreach ($this->getOption('bar') as $bar)
    {
      $form = new myForm();
      $form->widgetSchema->setNameFormat('foo_collection['.$bar['label'] . '][%s]');
      $wrapperForm->embedForm($bar['label'], $form);
    }

    $this->embedForm('foo_collection', $wrapperForm);
  }
}
我发现setNameFormat的参数很难看,但它似乎就是这样工作的。你同意还是有更好的解决方案

我正在手动构建表单布局,以下是我必须用于显示所有字段的循环:

<?php foreach ($form->getEmbeddedForm('foo_collection')->getEmbeddedForm() as $subForm): ?>
  <?php include_partial('form', array('form' => $subForm)) ?>
<?php endforeach; ?>
除了我的输入具有相同的名称和id之外,它几乎可以正常工作

我发现setNameFormat的参数很难看,但它似乎就是这样工作的。你同意还是有更好的解决方案

是的,Symfony和嵌入式表单有点混乱

但是,是的,有一个更好的解决方案,您应该让表单nameformat符合框架的要求

下面是fabien和ryan关于embedForm()/EmbedRelationship()函数、嵌入表单背后的逻辑以及呈现嵌入表单的文章

<?php foreach ($form->getEmbeddedForms() as $subForm): ?>