2011-12-13 3 views
0

이 코드는 Challenge-Controller의 "새로운 동작"에 포함되어 있습니다. Challenge-form을 제출하면 "player_one field does not exist"오류가 발생합니다."필드가 존재하지 않습니다"- 양식 제출시 오류가 발생했습니다.

if ($form->isValid()) 
{  
    foreach($form->get('teams') as $team_form) 
    { 
     $player_one = $team_form->get('player_one')->getData(); 
     $player_two = $team_form->get('player_two')->getData(); 

     $user_one = $this->getDoctrine()->getRepository('TennisconnectUserBundle:User')->findOneByUsername($player_one); 
     $user_two = $this->getDoctrine()->getRepository('TennisconnectUserBundle:User')->findOneByUsername($player_two); 

     // Add user(s) to the two teams 
     foreach($challenge->getTeams() as $i => $team) 
     { 
      // First team 
      if($i == 0) 
      { 
       if($user_one) 
       { 
        $team->addUser($user_one);         
       } elseif($user_two) 
       { 
        $team->addUser($user_two); 
       } 
      } 
      // Second team 
      elseif($i == 1) 
      { 
       if($user_one) 
       { 
        $team->addUser($user_one);         
       } elseif($user_two) 
       { 
        $team->addUser($user_two); 
       } 
      } 
     } 
    } 

    $em = $this->getDoctrine()->getEntityManager(); 
    $em->persist($challenge); 
    $em->flush();    

    return $this->render('TennisconnectDashboardBundle:Default:index.html.twig', array('form' => $form->createView(), 'user' => $user)); 
} 

하지만 "$의 player_one"를 디버깅 할 때, 그것은 나에게 텍스트 상자에서 올바른 값을 제공합니다

$player_one = $team_form->get('player_one')->getData(); 
die($player_one); 
+0

코드처럼 CSRF 토큰을 제거했다. 폼 유효성 검사가 성공하면 게시 한 코드가 실행됩니다. 우리는 폼의 isValid() 메소드 내부에서 어떤 일이 일어나는지 알아야합니다. 해당 양식을 통해 제출 된 샘플 $ _POST 데이터도 마찬가지입니다. –

+0

'if (isValid())'안에 'die ("test")'를 입력하고 양식을 제출하면 유효하며 '테스트'메시지가 표시되므로 유효하다고 생각합니다. – mattyh88

답변

0

문제를 찾을 수 있습니다. 내가이 작업을 수행했을 때 도전 과제 양식에 2 개의 팀 양식을 추가하는 동안 결과적으로 3 개를 받았습니다.

die(count($form->get('teams'))); 

나는 당신이 묻는 질문에 해당하지 않는 것 게시 된이

$form->get('teams')->remove('_token'); 
관련 문제