2015-02-04 69 views
1

我已经在symfony2中实现了表单的数据继承documentation,但是我的问题是当我使用form_widget()(Twig的函数)渲染它时我得到一个带有继承名称的额外标签领域。渲染继承形式在symfony2中添加额外的标签

父窗体代码:

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> 

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

我真的很感谢您的支持:)

+0

您是使用“{{form(form)}}”渲染还是像'{{form_row(form.email)}}'分开渲染每一行?如果分开,只需渲染每个内部字段而不是外部像'{{form_row(form.email.email)}}''。 – qooplmao

+0

我正在使用form_widget(表单) – Mollo

回答

1

你必须明确地设置labelfalse,以防止它的渲染。

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

就是这样,真的吗? 我不能给它一个托盘,因为我不在我的大腿上,但如果它的工作,你保存我的... – Mollo

+0

好吧,这就是我所做的,以防止标签被呈现 –

+0

它的正式,它的工作。谢谢你的帮助 :) – Mollo