2011-12-13 92 views
0

我在挑戰控制器的「新行爲」中擁有此代碼。當我提交我的挑戰表時,它會引發錯誤「field player_one 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

您發佈似乎不相關的你問這個問題的代碼。如果表單驗證成功,您發佈的代碼將運行,而您認爲它不是。我們需要看看窗體的isValid()方法中發生了什麼。以及通過所述表單提交的示例$ _POST數據。 – 2011-12-13 22:00:34

回答

0

發現問題。 當我這樣做的時候,它給了我3個結果,而我只是在挑戰表中增加了2個團隊表格。

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

我不得不刪除CSRF令牌這樣

$form->get('teams')->remove('_token');