2011-11-03 2 views
4

엔티티의 인스턴스와 이에 관련된 사용자를 생성하는 페이지를 구현했습니다. 내 문제는 제출 후 요청을 바인딩하는 것입니다. 견적formBSymfony2 - 하나의 액션으로 여러 폼

$formA = $this->createForm(new \MyApp\ABundle\Form\AddObjectForm()); 
$formB = $this->createForm(new \MyApp\UserBundle\Form\AddUserForm()); 

if ($request->getMethod() == 'POST') 
{ 
    $formA->bindRequest($request); 
    $formB->bindRequest($request); 

    if ($formA->isValid() && $formB->isValid()) 
    { 
    } 
    // ... 
} 

AbstractType를 확장 :

지금 나는이 있습니다. 그러나 당연히 $formA->isValid()은 false를 반환합니다. 요청을 "자르기"위해 어떻게해야합니까?

답변

7

양식이 관련되어 있으므로 한 번에 처리하고 유효성을 검사해야하는 경우 embedded forms을 사용해보십시오. 그렇지 않으면 각 양식에 대해 별도의 작업을 사용하십시오.

기존 필드에서 사용자를 선택하기 위해 선택 필드를 제공해야하는 경우 entity type field을 사용해보십시오.

+0

감사합니다. 포함 된 양식은 내가 필요한 것입니다. – Naelyth

5

나는 그 대답 이후로 오랜 시간이 걸렸으나 누군가가 그것을 찾고 있다면 아마도 도움이 될 수 있음을 알고있다.

user_form과 company_form의 두 가지 형식이 있는데 제출은 컨트롤러와 동일한 기능으로 수행됩니다. 양식이 다음 코드와 함께 제출되었음을 알 수 있습니다.

if ($request->getMethod() == 'POST') { 

     $data = $request->request->all(); 

     if (isset($data['user_form'])) //This if means that the user_form has been submit. 
     { 

company_form은 else를 통과합니다.

관련 문제