2012-10-05 3 views
0

왜 내 매핑과 컨트롤러 동작이 작동하지 않는지 궁금합니다. 이를 위해서는 필자의 이전 게시물 인 엔티티와 데이터베이스 스키마 (여기서는 here)를 설명해야합니다. 더 이상 업데이트가 없으므로 새 게시물을 시작해야하며 Doctrine + Zend Pros의 관심을 끄는 유일한 방법이라고 생각했습니다.기본 키로 복합 및 외래 키 doctrine 2 + zend framework 2

이전 게시물에서 설명한대로 Zend Form을 사용하면 teamId 및 teamName을 입력 할 수 있으며 양식의 드롭 다운 목록에서 여러 플레이어를 선택할 수 있으며 플레이어를 팀에 할당 할 수 있습니다. 그래서 기본적으로 교리와 젠드를 달성하는 것이 저의 목표입니다. 이를 위해 필자는 이전 게시물에 설명 된 엔티티를 작성했으며 지금은 엔티티를 유지하기 위해 컨트롤러에서 코드를 추가하려고합니다.

컨트롤러 :

public function addAction() 
    { 
     $form = new TeamForm($this->getEntityManager()); 

     $form->get('submit')->setAttribute('value', 'Add'); 

     $request = $this->getRequest(); 

     if ($request->isPost()) 
     { 
      $team = new Team(); 
      $player = new Player(); 
      $teamPlayers = new TeamPlayer(); 

      $form->setInputFilter($typeset->getInputFilter()); 

      $form->setData($request->getPost()); 

      if ($form->isValid()) 
      { 
       $team->populate($form->getData()); 

       $teamPlayers->setPlayer($player); 
       $teamPlayers->setTeam($team); 

       $this->getEntityManager()->persist($teamPlayers); 

       $this->getEntityManager()->flush(); 

       //Reroute to the index page once the data is successfully added 
      } 
     } 
     //return form array 
     return array(
      'form' => $form 
      ); 
    } 

가 그래서 임은 이미 플레이어 표가 데이터로 채워 한, 두 테이블 (팀 테이블 및 teamPlayer 표)로 엔티티를 저장 내 컨트롤러에 뭘 기본적으로. 따라서 팀에 선수를 추가하고 두 테이블에 값을 할당하려고합니다.

지금은 양식을 볼 수 있습니다. 데이터를 입력하고 제출을 누르면 아무 것도 일어나지 않습니다. 아무런 조치없이 양식을 볼 수 있습니다. 데이터가 데이터베이스에 성공적으로 저장되면 인덱스 페이지로 다시 라우팅됩니다.

매핑 섹션이나 컨트롤러 쪽에서 오류 발생을 지적하면 도움이 될 것입니다.

특히 Doctrine 2의 공식 문서는 너무 광범위하며 특히 요구 사항에 대해 명확하지 않습니다.

1 단계 :

답변

0

의이 단계로이 답변을 업데이트하여 그것을 해결하려고하자이 $form->isValid()

을 통과하는 경우 단어가 유효성 검사에서 몇 가지 문제가있을 수 있습니다, 나에게 암시, 그래서 검사를 할 수 있습니다
if ($form->isValid()) 
      { 
       $team->populate($form->getData()); 
       $teamPlayers->setPlayer($player); 
       $teamPlayers->setTeam($team); 
       $this->getEntityManager()->persist($teamPlayers); 
       $this->getEntityManager()->flush(); 
       //Reroute to the index page once the data is successfully added 
      }else{ 
     var_dump($form->getMessages()); 

} 
나는 또한 교리의 명령 행 사용하도록 제안 할 수 있습니다

: doctrine orm:validate-schema, 당신의 엔티티 매핑을 확인 플러스 데이터베이스 매핑도 괜찮 여부를 확인하는 데 도움이 될 것입니다이 명령은, 당신의 doctrine2 엔티티를 디버깅하는 것이 아니라 편리한 참조

ps : 귀하의 엔티티를 아직 깊이 읽지 않았습니다.

+0

답장을 보내 주셔서 감사합니다. 그러나 제가 찾고있는 정확한 해결책을 찾는 데 도움이되지 않습니다. – 125369

+0

그래서 새로운 상태로 질문을 업데이트 해주십시오. – tawfekov