2014-10-12 28 views
5

Ho una forma come di seguito:come rimuovere un campo di modulo in moduli incorporati da symfony 2 Controller

class AdminEmployerForm extends AbstractType { 

    public function buildForm(FormBuilderInterface $builder, array $options) { 
     $builder 
      ->add('firstName', 'text') 
      ->add('user', new AdminUserForm()); 
    } 
} 


class AdminUserForm extends AbstractType { 

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

sto chiamando AdminEmployerForm nel controllore e io voglio rimuovere campo email di AdminUserForm da AdminEmployerForm:

$form = $this->createForm(new AdminEmployerForm, $employer); 
//i want to do something like $form->remove('email') 

Come posso utilizzare $ form-> remove() per rimuovere il campo in forma incorporata? È possibile rimuovere un campo del modulo incorporato dal controller?

risposta

10

È necessario ottenere il tipo di modulo incorporato per rimuovere un campo da esso.

$form = $this->createForm(new AdminEmployerForm, $employer); 

// Get the embedded form... 
$adminUserForm = $form->get('user'); 

// ... remove its email field. 
$adminUserForm->remove('email'); 

Non sono sicuro del vostro esatto caso d'uso, ma si può considerare leveraging form events come può essere più ideale che la gestione di questo nel controller.

+1

Minore cosa che sono sicuro che avresti capito rapidamente, ma devi rimuovere il campo prima di '$ form-> handleRequest ($ request)'. – bassplayer7