2012-03-15 8 views
14

"500 내부 서버 오류 - LogicException : Doctrine 인스턴스를 요청 정보에서 가져 오는 방법을 추측 할 수 없습니다". 여기요청 정보에서 Doctrine 인스턴스를 얻는 방법을 추측 할 수 없습니다.

내 컨트롤러의 활동 정의 :

/** 
* @Route("/gatherplayer/{player_name}/{gather_id}") 
* @Template() 
*/ 
public function createAction(Player $player, Gather $gather) 
{ 
    // ... 
} 

그리고 그것은 작동하지 않습니다 아마 교리이 때문에 "추측"할 수 ... 그럼 어떻게 내가 교리 2 추측을, 잘합니까?

+2

[@ParamConverter] (http://symfony.com/doc/current/bundles/SensioFrameworkExtraBundle/annotations/converters.html) 주석을 살펴보십시오. – 1ed

답변

6
/** 
* @Route("/gatherplayer/{name}/{id}") 
* @Template() 
*/ 
public function createAction(Player $player, Gather $gather) 

내가 그것을 하나 개 이상의 매개 변수를 추측하는 방법, paramconverter의 (? 가난한) 문서에 어떤 도움을 찾을 수 없습니다 그리고 물건. 게다가 방금 쓴 것이 제대로 작동하기 때문에 필요하다고 확신 할 수 없습니다.

내 실수는 내 속성의 이름을 사용하지 않아서 교리가 올바르게 추측 할 수 없었습니다. {player_name}을 {name} (으)로 변경하고 {gather_id}을 {id} (으)로 변경했습니다.

은 그 때 나는 "ID"에서 자신의 실체에 내 ID의 이름을 변경 "id_gather"와 "id_player"내가 지금 할 수 있어요에 : 훨씬 더 효과적이다

/** 
* @Route("/gatherplayer/{id_player}/{id_gather}") 
* @Template() 
*/ 
public function createAction(Player $player, Gather $gather) 

이제

* @Route("/gatherplayer/{id}/{id}") 

보다 내가

/** 
    * @Route("/gatherplayer/{player}/{gather}") 
    * @Template() 
    */ 
public function deleteAction(Gather_Player $gather_player) 
0

@ 1ed가 맞으면 Player 인스턴스 또는 Gather 인스턴스를 가져 오기 위해 @paramConverter를 정의해야합니다.

+0

YAML 설정 파일에서 @paramConverter를 어떻게 사용할 수 있습니까? – linuxatico

+0

@paramConverter는 SensioFrameworkExtraBundle에 의해 구현됩니다. 번들이 yml.xml 파일을 통해이 기능을 노출한다고 생각하지 않습니다. 주석을 사용하는 유일한 방법이라고 생각합니다. – ftassi

3

이 시도 : 그것이 어떻게 작동하는지 설명하지 않기 때문에

/** 
* @Route("/gatherplayer/{player_name}/{gather_id}") 
* @ParamConverter("player", class="YourBundle:Player") 
* @ParamConverter("gather", class="YourBundle:Gather") 
* @Template() 
*/ 
public function createAction(Player $player, Gather $gather) 
22

교리 재를 사용하는 방법을 알고하지 않는이 일을 할 수있는 방법 궁금하네요 함수의 서명에 지정된 엔티티를 질의하기 위해 퀘스트 매개 변수.

당신은 몇 가지 매핑 정보를 지정하여 도움이 필요합니다 :

/** 
    * @Route("/gatherplayer/{player_name}/{gather_id}") 
    * 
    * @ParamConverter("player", options={"mapping": {"player_name" : "name"}}) 
    * @ParamConverter("gather", options={"mapping": {"gather_id" : "id"}}) 
    * 
    * @Template() 
    */ 
public function createAction(Player $player, Gather $gather) 
{ 
    // ... 
} 
0

매개 변수를 @Route 주석의 서명에 교리가 자동 convertion하게되도록 개체의 필드와 일치해야합니다.

그렇지 않으면 @ParamConverter 주석을 사용하여 수동으로 변환해야합니다. 다른 응답에서 언급했기 때문입니다.

관련 문제