2012-03-27 2 views
0

일반 서식 클래스 FormA와 Form2에 Embeded Form Form1과 Form2가 일반 클래스에 포함되어 있습니다. embeded forms 외에도 선택 사항 위젯이 있고 doBind에서 embeded 중 하나의 설정을 해제하려고합니다. (선택 위젯의 내용에 따라) 형태 이 does'nt WORK : 사람과 동물 모델 생물 (열 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하고 DB에 내가 3 세이브가 (동물 용, 사람 용, 생물 용)

어떤 아이디어 녀석 ???

답변

2

configure() 메서드가 호출 된 후 포함 된 양식을 해제하면 양식 수명주기에 너무 늦습니다. configure() 메소드를 구현하면 실제로 필요한 하위 양식 만 포함합니다.

예를 들어 선택한 선택 항목의 값을 양식에 전달한 다음 configure() 메소드에서 PersonForm 또는 AnimalForm을 추가할지 여부를 결정하십시오.