我有一个字段列表,每个字段都可以是"选择"或"电台"的按钮。
所以我有一个collectionType ProductOptions,集合的每个元素都是一个OptionGroup,其结果是一个entityType
使用POST_SET_DATA设置一个OptionGroup(entityType)的optionElements。
我现在想要做的是,当第一个entityType被更改时,第二个实体将使用optionElements(带有ajax)提交,依此类推......
如果我们填充了5个entityTypes并且我们更改了第一个,则将删除下一个4(例如,在jquery中隐藏)
怎么可能这样做? 提前谢谢。
public function buildForm(FormBuilderInterface $builder, array $options) {
$builder
->add('productOptionGroups', CollectionType::class, array(
'entry_type' => ProductOptionGroupType::class,
'label' => false,
'required' => true,
));
}
和选项组
public function buildForm(FormBuilderInterface $builder, array $options) {
$builder->addEventListener(FormEvents::POST_SET_DATA, function ($event) {
$builder = $event->getForm();
$entity = $event->getData();
$optionGroup = $entity->getOptionGroup();
$optionType = $optionGroup->getOptionType();
$elements = $entity->getOptionElements(); // or a query builder
if($optionType == OptionGroup::OPTIONGROUP_TYPE_SELECT){
$builder
->add('elements', EntityType::class, array(
'class' => 'AnaShopBundle:OptionElement',
'choices' => $elements,
'label' => $optionGroup,
'required' => true,
'property' => 'name',
'mapped' => false,
));
} elseif ($optionType == OptionGroup::OPTIONGROUP_TYPE_RADIO) {
$builder
->add('elements', EntityType::class, array(
'class' => 'AnaShopBundle:OptionElement',
'choices' => $elements,
'label' => $optionGroup,
'expanded' => true,
'required' => true,
'property' => 'name',
'mapped' => false,
));
}
});
}