【问题标题】:Symfony2 form collection of one entitySymfony2 一个实体的表单集合
【发布时间】:2016-09-19 21:52:56
【问题描述】:

我有一个名为“候选人”的实体。它不是那么特别。就其本身而言,它做得很好:我可以从一个类型创建一个表单并将其持久化。

class CandidateType extends AbstractType
{
public function buildForm(FormBuilderInterface $builder, array $options)
{
    $builder
        ->add('name', TextType::class, array('label' => 'Naam'))
        ->add('openPosition', EntityType::class, array('class' => 'AppBundle:OpenPosition','choice_label' => 'subject','label' => 'Functie'))
        ;

}

但是,我希望能够收集此表单,以便用户能够使用 Javascript 一遍又一遍地创建新的候选人并一次保存它们。我已经在另一个集合上做了一些工作(实体与另一个实体具有一对多关系,具有原型和一些不错的 Javascript)并且工作正常,但我似乎无法创建一个集合一个实体(实际上听起来很像一个悖论,也许我走错了路)。

对此有什么想法吗?

【问题讨论】:

  • 您好,为什么不创建一个带有候选人数组集合的自定义表单类型,然后按照您想要的方式处理提交(前面有漂亮的 javascript 来处理添加和删除等)?还是我错过了什么?

标签: javascript forms symfony formcollection


【解决方案1】:

来自 symfony 文档 - 您可以使用 jquery 嵌入表单集合。通过使用数据原型和许多 javascript/jquery,您应该能够做到这一点。

这是文档,我用它来管理用户的多个地址添加,效果很好!

http://symfony.com/doc/current/form/form_collections.html#allowing-new-tags-with-the-prototype

但可以肯定的是,您必须创建一个自定义的 multipleCreateAction() 来处理设置的候选者的多重创建。

【讨论】:

    【解决方案2】:

    我已经用Alvaro suggested的方式解决了这个问题:通过创建一个候选数组集合:

    $candidates['candidates'] = new ArrayCollection();
    

    然后我像处理任何其他表单集合一样处理它。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2012-02-13
      • 1970-01-01
      • 2015-02-10
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多