更改symfony 2表单字段的名称属性

更改symfony 2表单字段的名称属性,symfony,symfony-forms,Symfony,Symfony Forms,我有一张表格要登记: public function buildForm(FormBuilderInterface $builder, array $options) { parent::buildForm($builder, $options); $builder->add('tel'); $builder->add('telvisible'); } 显示此字段后: <input type="checkbox" id="fos_user_regi

我有一张表格要登记:

 public function buildForm(FormBuilderInterface $builder, array $options)
{
    parent::buildForm($builder, $options);

    $builder->add('tel');
    $builder->add('telvisible');
}
显示此字段后:

<input type="checkbox" id="fos_user_registration_form_telvisible" name="fos_user_registration_form[telvisible]" value="1">

但我想展示:

  <input type="checkbox" id="fos_user_registration_form_telvisible" name="telvisible" value="1">

要从名称中删除类型名称,有两种解决方案:

  • getName
    getBlockPrefix
    实现中返回null
  • 使用createNamed方法创建表单。

  • 为什么要更改属性?基本上你无法控制名称。S2表单句柄依赖它将发布的数据映射回实体。一旦你开始用嵌套的实体创建更复杂的表单,那么名称就会完全失控。所有这些都可以工作,但它并不意味着人类可读。关于名称的问题是…?我对jquery插件有问题:无法识别的表达式:input[name=fos\u user\u registration\u form[telvisible]],但当我使用其他名称(没有[])时,它成功工作了,这是众所周知的javascript/php问题。在大多数情况下,您可以通过在名称周围加引号来修复它。输入[name='fos\u user\u registration\u form[telvisible]']
    public function getBlockPrefix() 
    {
        return null;
    }
    
    $form = $this->get('form.factory')
     ->createNamedBuilder(null, 'form', $address)
     ->add('address', 'text');