Symfony 3 无线电输入名称更改

Symfony 3 radio input name change

我有一个表单,其中包含实体 (CustomerVats) 的表单 (CustomerVatsType)。该实体有一列 (vats),其中包含多个增值税行。这些行以 json 格式保存。在此表格上,客户可以选择一个默认增值税,该增值税将保存在单位列中保存的行的“默认”索引中。

但问题是由于表单结构,单选输入名称是“form[vats][0][set_default]”。但要使无线电输入正常工作,所有输入都必须相同(例如 form[vats][set_default])。我可以在 twig 文件中更改名称,但是 class 无法理解这一点。

对于这种情况可以做些什么。甚至 Symfony 是否支持它。这是我的表格 class.

class VatsType extends AbstractType {
    public function buildForm(FormBuilderInterface $builder, array $options) {
        $builder
        ->add('vats', CollectionType::class, array(
                'entry_type'   => VatType::class,
                'allow_add'    => false,
                'allow_delete' => false,
                'prototype'    => false,
                'by_reference' => false,
            )
        )
        ->add('vatSumbit', SubmitType::class);
    }
}


class VatType extends AbstractType {
    public function buildForm(FormBuilderInterface $builder, array $options) {
        $builder
        ->add('country_id', HiddenType::class, array('label' => false))
        ->add('vat_high', HiddenType::class, array('label' => false))
        ->add('vat_low', HiddenType::class, array('label' => false))
        ->add('vat_zero', HiddenType::class, array('label' => false))
        ->add('vat_none', HiddenType::class, array('label' => false))
        ->add('set_default', RadioType::class, array('label' => false))
        ->add('set_show', RadioType::class, array('label' => false));
    }
}

我最终使用以下修复程序解决了这个问题。它看起来有点脏,但最有意义,因为我不想用一些非常困难的方法混淆其他开发者。

<script type="text/javascript">
    (function (document, window, $) {
        $('[data-radio-field]').change(function () {
            var field = $(this).data('radio-field');
            $('[data-radio-field="' + field + '"]').not($(this)).prop('checked', false);
        });
    })(document, window, jQuery);
</script>

如果谁能提出一个干净的方法,欢迎回答。我认为这应该是一个普遍的问题。想看看其他的方法。