2012-03-27 45 views
0

我有兩個嵌入形式Form1和Form2在一般形式類FormA中, 在一般類中,除了嵌入形式我有一個選擇小部件和doBind中我試圖取消設置其中一個嵌入形式(取決於選擇的小工具內容) 這一點兒也不工作: 人與動物模型上的生物(列agregation)繼承在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); 

     } 

形式是永遠unseted並在數據庫中我有3個省(一個用於動物,一個用於人,另一個用於生物)

任何想法傢伙?

回答

2

在調用configure()方法後取消設置嵌入表單在表單的生命週期中已經太晚了。 實施您的configure()方法,以便它只嵌入您需要的子窗體。

例如,將所選選項的值傳遞給窗體,然後在configure()方法中決定是否添加PersonForm或AnimalForm。