Symfony表单:具有不同原型的CollectionType

时间:2016-02-25 18:18:04

标签: php forms symfony doctrine

有没有办法用CollectionType构建一个可以添加不同原型的表单。

背景:我想构建一个“Pagebuilder”。 功能就像这个,但我必须将它集成到现有的应用程序中。

Pagebuilder with SuluCMF

所以我必须添加不同的原型。可以使用选择字段切换不同的原型。

应该有多个具有不同表单字段的表单。 例如。

一个
  • 产品链接
  • 单个WYSIWYG元素
  • 包含元数据的图片
  • 等...

表格应尽可能简单。 所以我需要添加多个原型的可能性。

这已经可以(以及如何)?

2 个答案:

答案 0 :(得分:0)

编辑:虽然您的问题是关于CollectionType,但在仔细查看截图后,我认为您只需创建一个包含多个子表单的主表单,并根据用户选择显示相应的子表单(使用javascript)。 / p>

答案 1 :(得分:0)

如果您坚持使用CollectionType(我在屏幕截图中没有看到原因),那么您可以执行以下操作:

    $builder->add('entity1', CollectionType::class, [
        'label' => 'entity.recipe.entity1',
        'entry_type' => \AppBundle\Form\Type\Entity1Type::class,
        'allow_add' => true,
        'allow_delete' => true,
        'prototype' => true,
        'prototype_name' => '__EntityId__',
        'entry_options'  => ['required'  => false],
        ]);

    $builder->add('entity2', CollectionType::class, [
        'label' => 'entity.recipe.entity2',
        'entry_type' => \AppBundle\Form\Type\Entity2Type::class,
        'allow_add' => true,
        'allow_delete' => true,
        'prototype' => true,
        'prototype_name' => '__EntityId__',
        'entry_options'  => ['required'  => false],
        ]);
...

根据需要添加任意数量的实体类型,每个实体类型都是一个包含零个或多个项目的集合。