In grado di indovinare come ottenere una Dottrina istanza di richiesta informazioni

Ho questo “500 Internal Server Error – LogicException: in Grado di indovinare come ottenere una Dottrina istanza di richiesta di informazioni“.

Qui è il mio controller di definizione dell’azione:

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

E non funziona, probabilmente perché la Dottrina 2 non può “indovinare”… Quindi come faccio a fare in Dottrina 2 indovinare, e bene?

InformationsquelleAutor copndz | 2012-03-15



5 Replies
  1. 29

    La Dottrina non sa come utilizzare i parametri della richiesta, al fine di query entità specificata nella funzione di firma.

    Sarà necessario per aiutare, specificando alcune informazioni di mapping:

    /**
      * @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)
    {
      //...
    }
  2. 10
    /**
     * @Route("/gatherplayer/{name}/{id}")
     * @Template()
     */
    public function createAction(Player $player, Gather $gather)

    Non ho trovato nessuna guida in paramconverter del (povero?) la documentazione, in quanto non descrivere come funziona, come si intuisce con più parametri e roba del genere. Plus io non sono sicuro che sia necessario in quanto quello che ho appena scritto funziona correttamente.

    Mio mystake era di non utilizzare il nome del mio attributi così dottrina poteva indovinare a destra. Ho cambiato {nonna} a {nome} e {gather_id} a {id}.

    Poi ho cambiato i nomi dei miei id nella loro entità “id” alla “id_gather” e “id_player” quindi io sono ora in grado di farlo :

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

    che è molto più efficace di

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

    Ora mi chiedo come posso fare questo lavoro

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

    provare questo:

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

    @1ed è giusto, è opportuno definire un @paramConverter al fine di ottenere un Giocatore istanza o di un Raccogliere istanza.

    • Come posso utilizzare la funzione @paramConverter in un file di configurazione YAML?
    • è implementato da SensioFrameworkExtraBundle. Non credo che il bundle di esporre questa funzionalità tramite yml o file di configurazione xml, penso che l’unico modo è usare l’annotazione.
  5. 0

    I parametri della firma di @Route annotazione deve corrispondere l’entità campi, in modo che la Dottrina rende automaticamente la conversione.

    Altrimenti devi fare la conversione manualmente utilizzando l’annotazione @ParamConverter come è indicato sulla le altre risposte.

Lascia un commento