无法猜测如何从请求信息中获取Doctrine实例

cop*_*ndz 18 php symfony doctrine-orm

我有这个"500内部服务器错误 - LogicException:无法猜测如何从请求信息中获取Doctrine实例 ".

这是我的控制器的动作定义:

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

并且它不起作用,可能是因为Doctrine 2无法"猜测"......所以我如何让Doctrine 2猜测,好吧?

Azr*_*Azr 30

Doctrine不知道如何使用请求参数来查询函数签名中指定的实体.

您需要通过指定一些映射信息来帮助它:

/**
  * @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)
{
  // ...
}
Run Code Online (Sandbox Code Playgroud)


cop*_*ndz 10

/**
 * @Route("/gatherplayer/{name}/{id}")
 * @Template()
 */
public function createAction(Player $player, Gather $gather)
Run Code Online (Sandbox Code Playgroud)

我没有在paramconverter(穷人?)文档中找到任何帮助,因为它没有描述它如何工作,它如何猜测多个参数和东西.另外我不确定它是否需要,因为我刚写的内容正常.

我的mystake不是使用我的attributs的名字所以教义无法猜对.我将{player_name}更改为{name},将{gather_id}更改为{id}.

然后我将我的id中的id的名称从"id"更改为"id_gather"和"id_player",所以我现在能够这样做:

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

这比有效得多

 * @Route("/gatherplayer/{id}/{id}")
Run Code Online (Sandbox Code Playgroud)

现在我想知道如何才能做到这一点

 /**
  * @Route("/gatherplayer/{player}/{gather}")
  * @Template()
  */
 public function deleteAction(Gather_Player $gather_player)
Run Code Online (Sandbox Code Playgroud)


Lha*_*zzi 5

尝试这个:

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