Symfony 3无线电输入名称更改

时间:2016-12-26 07:18:35

标签: php forms symfony radiobuttonlist

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

但问题是无线电输入名称是" 形式[vats] [0] [set_default] "由于形式的结构。但是要使无线电输入正常工作,所有输入都需要相同(例如形式[vats] [set_default] )。我可以在twig文件中更改名称但是然后表单类无法理解这一点。

这种情况可以做些什么。甚至Symfony都支持它。这是我的表格类。

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));
    }
}

1 个答案:

答案 0 :(得分:0)

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

<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>

如果有人可以提出干净的方法,欢迎他们回答。我认为这应该是一个常见的问题。希望看到其他方法。