2016-12-26 35 views
2

我有一个窗体(CustomerVatsType)为一个实体(CustomerVats)。该实体有一列(),其中包含多个增值行。这些行以json格式保存。在此表格中,客户可以选择一个默认的增值税,它将被保存在“默认”索引保存在单位栏中的行。Symfony 3无线电输入名称更改

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

这种情况可以做些什么。 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

我想如果你在树枝中设置字段名称,你可以绑定响应字段与表单字段,使用handleRequest来做到这一点。 –

+0

@AshishAwasthi。 。我更改了字段名称,以便发出错误信息,这些字段不会出现在帖子中。我如何更改handleRequest中的发布数据。我是否需要FormEventSubscriber。 。你能提供一些我可以参考的资源吗? –

回答

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> 

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