在EntityType上为每个Entity实例设置多个

时间:2017-04-27 11:03:54

标签: symfony symfony-forms

根据我的问题域名,我需要 EntityType ,其中包含 RadioButtons CheckBoxes

每个Selection的{​​{1}}属性设置为multipletrue,因为它需要falsecheckbox

radio

Product Selections: [X] Selection 1 [ ] Selection 2 ( ) Selection 3 (o) Selection 4 [X] Selection 5 是一个实体,Selection可以有多个Product

ProductType

Selection

我尝试使用Form Type Extension但没有成功:class

class ProductType extends AbstractType
{
    public function buildForm(FormBuilderInterface $builder, array $options)
    {
        $builder
            ->add('selections', SelectionListType::class);
    }

    public function configureOptions(OptionsResolver $resolver)
    {
        $resolver->setDefaults(array(
            'data_class' => Product::class
        ));
    }
}

class SelectionListType extends AbstractType
{
    public function configureOptions(OptionsResolver $resolver)
    {

        $resolver->setDefaults(array(
            'class'         => Selection::class,
            'expanded'      => true,
            'multiple'      => ???????????
        ));
    }

    public function getParent()
    {
        return EntityType::class;
    }
}

我该如何实现?

1 个答案:

答案 0 :(得分:1)

根据您的问题和评论,我认为最佳解决方案是将其拆分为两个EntityType - 一个multiple设置为false,另一个设置为true }。

然后使用DataTransformerSelection集合拆分为两个数组,并将它们放到适当的EntityType中。您还需要将来自这些EntityType的数据合并到反向数据转换器中的一个集合中,并将其放入您的Product实体。

最好在单独的FormType中执行此操作,以使其透明地工作。