渲染继承表单在symfony2中添加了额外的标签

时间:2015-02-04 23:37:25

标签: forms symfony twig symfony-2.6

我在documentation之后的symfony2中实现了表单的数据继承,但我的问题是当我使用form_widget()(Twig的函数)渲染它时,我得到一个带有继承名称的额外标签字段。

父表单代码:

public function buildForm(FormBuilderInterface $builder, array $options){
    $builder->add('username')
        ->add('email', new EmailType()) // <-- Getting child
        ->add('birthdate', 'date')
        ->add('plainPassword', new PasswordType());
}

儿童表格代码:

class EmailType extends AbstractType {

   public function buildForm(FormBuilderInterface $builder, array $options){
       $builder->add('email', 'email');
   }

   public function getName() {
       return 'user_email';
   }

}

控制器代码(简体):

 $user = new User();
 $form = $this->createForm(new RegisterType(), $user);
 return $this->render(':users:register.html.twig', array('form' => $form->createView()));

我呈现的形式如下:

<label class="required">Email</label>   
<div id="user_register_email">
    <label for="user_register_email_email" class="required">Email</label>   <--- Child's label Not wanted
    <input type="email" id="user_register_email_email" name="user_register[email][email]" required="required">
</div>

任何人都知道为什么会发生这种情况以及如何解决?

我非常感谢您的支持:)

1 个答案:

答案 0 :(得分:1)

您必须明确将label设置为false以防止其呈现。

$builder->add('email', new EmailType(), array(
   'label' => false,
));