根据我的问题域名,我需要 EntityType ,其中包含 RadioButtons 和 CheckBoxes :
每个Selection
的{{1}}属性设置为multiple
或true
,因为它需要false
或checkbox
。
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;
}
}
我该如何实现?
答案 0 :(得分:1)
根据您的问题和评论,我认为最佳解决方案是将其拆分为两个EntityType
- 一个multiple
设置为false
,另一个设置为true
}。
然后使用DataTransformer将Selection
集合拆分为两个数组,并将它们放到适当的EntityType
中。您还需要将来自这些EntityType
的数据合并到反向数据转换器中的一个集合中,并将其放入您的Product
实体。
最好在单独的FormType
中执行此操作,以使其透明地工作。