Unable to guess how to get a Doctrine instance from the request information

前端 未结 5 2430
青春惊慌失措
青春惊慌失措 2021-02-18 17:16

I\'ve got this \"500 Internal Server Error - LogicException: Unable to guess how to get a Doctrine instance from the request information\".

Here is my c

相关标签:
5条回答
  • 2021-02-18 17:38
    /**
     * @Route("/gatherplayer/{name}/{id}")
     * @Template()
     */
    public function createAction(Player $player, Gather $gather)
    

    I didn't find any help in paramconverter's (poor?) documentation, since it doesn't describe how it works, how it guesses with more than one parameters and stuff. Plus I'm not sure it's needed since what I just wrote works properly.

    My mystake was not to use the name of my attributs so doctrine couldn't guess right. I changed {player_name} to {name} and {gather_id} to {id}.

    Then I changed the names of my id in their entities from "id" to "id_gather" and "id_player" so I'm now able to do that :

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

    which is a lot more effective than

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

    Now I'm wondering how I can make this work

     /**
      * @Route("/gatherplayer/{player}/{gather}")
      * @Template()
      */
     public function deleteAction(Gather_Player $gather_player)
    
    0 讨论(0)
  • 2021-02-18 17:41

    try this:

    /**
     * @Route("/gatherplayer/{player_name}/{gather_id}")
     * @ParamConverter("player", class="YourBundle:Player")
     * @ParamConverter("gather", class="YourBundle:Gather")
     * @Template()
     */
    public function createAction(Player $player, Gather $gather)
    
    0 讨论(0)
  • 2021-02-18 17:47

    @1ed is right, you should define a @paramConverter in order to get a Player instance or a Gather instance.

    0 讨论(0)
  • 2021-02-18 17:49

    The parameters on the signature of the @Route annotation must match the entities fields, so that Doctrine makes automatically the convertion.

    Otherwise you need to do the convertion manually by using the annotation @ParamConverter as it's mentionned on the other responses.

    0 讨论(0)
  • 2021-02-18 18:04

    The Doctrine doesn't know how to use request parameters in order to query entities specified in the function's signature.

    You will need to help it by specifying some mapping information:

    /**
      * @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 讨论(0)
提交回复
热议问题