2012-10-06 14 views
25

Come posso ottenere un gestore di entità da dentro un controllore con le più recenti Symfony e dottrina?Come arrivare gestore di entità per la Dottrina un'entità con Symfony 2.1 dall'interno del controller

Il modo descritto in "The Book" contrassegnato come deprecato ora. Qual è un modo moderno (corretto) per farlo?

public function someAction() 
{ 
    // getEntityManager() from Doctrine\Bundle\DoctrineBundle\Registry is deprecated 
    $entityManager = $this->getDoctrine()->getEntityManager(); 
    ... 
} 
+0

In realtà non sapevo sul metodo deprecato fino a poco tempo, è stato osservato come un avvertimento nella pagina Symfony2 di debug, e mi ha anche detto che cosa è il nuovo metodo che dovrei usare. Quindi immagino che la maggior parte delle volte trovi la risposta nella pagina di debug. –

risposta

45

Utilizzare invece $this->getDoctrine()->getManager().

In realtà, è meglio non fare i controllori a conoscenza del strato di persistenza che si sta utilizzando. Quella roba dovrebbe essere spostata su Service Layer per astrarre il modo in cui i dati vengono mantenuti.

+0

Sì, giusto. Grazie) –

+1

Cosa intendi? Tutti i metodi relativi ai database dovrebbero essere spostati nel Service Layer? Qual è il vantaggio? EntityManager è già nel livello di servizio (suppongo). O sto fraintendendo qualcosa? Puoi fare un esempio? –

+0

@Elnur Ho visto affermazioni simili come "Non dovresti farlo sul tuo controller" dappertutto, ma tutte le risposte non riescono a spiegare perché. So che i controller sono specifici della struttura e persistendo nel controller il tuo codice non è così portatile come potrebbe essere, ma non ne ho visto un esempio concreto. – ILikeTacos

Problemi correlati