2014-10-12 14 views
5

Ich habe ein Formular, wie unten entfernen:wie ein Formularfeld in eingebetteten Formen von 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'); 
    } 
} 

ich AdminEmployerForm in Controller nenne und ich möchte E-Mail-Feld von AdminUserForm von AdminEmployerForm entfernen:

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

Wie kann ich $ form-> remove() verwenden, um Feld in eingebetteter Form zu entfernen? Ist es möglich, ein Feld des eingebetteten Formulars vom Controller zu entfernen?

Antwort

10

Sie müssen bekommen den eingebetteten Formulartyp, um ein Feld daraus zu entfernen.

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

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

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

Nicht sicher Ihren genauen Anwendungsfall, aber Sie können leveraging form events betrachten, wie es dies ideal sein kann in der Steuerung als die Handhabung.

+1

Geringfügige Sache, die Sie sicher schnell herausfinden würden, aber Sie müssen das Feld vor '$ form-> handleRequest ($ request)' entfernen. – bassplayer7