2015-02-04 67 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