2012-03-27 7 views
0

Ich habe zwei eingebettete Formulare Form1 und Form2 in einer allgemeinen Formularklasse FormA, in der allgemeinen Klasse, neben den eingebetteten Formen habe ich ein Auswahl Widget und in der DoBind versuche ich einen der eingebetteten zu entschärfen Formen (von dem Wahl-Widget Inhalt abhängig) diese does'nt WORK: Person und Tiermodelle von Kreatur (Spalte agregation)unset embeded forms in symfony

protected function doBind(array $values) 
     { 
//embeded forms are 'person' and 'animal' 
      $forms = $this->embeddedForms; 


      if($values['type']== 'animal') 
      { 
       unset($forms['person']); 

       unset($values['person']['last_name'], $values['person']['first_name'] , $values['person']['civility'], $values['person']['id']); 
      } 
      parent::doBind($values); 

     } 

die Form erben ist nie unseted und in der DB habe ich 3 speichert (eine für Tier, eine für die Person und eine für die Kreatur)

keine Idee Leute ???

Antwort

2

Das Deaktivieren eines eingebetteten Formulars nach dem Aufruf der Methode configure() ist zu spät im Lebenszyklus eines Formulars. Implementieren Sie Ihre configure()-Methode, sodass nur die Teilformulare eingebettet werden, die Sie wirklich benötigen.

Übergeben Sie zum Beispiel den Wert der ausgewählten Auswahl an das Formular und entscheiden Sie dann in der configure() -Methode, ob die PersonForm oder die AnimalForm hinzugefügt werden soll.