2012-10-06 12 views
25

Jak mogę uzyskać menedżera encji z poziomu kontrolera z najnowszymi Symfony i Doctrine?Jak uzyskać menedżera encji dla jednostki Doctrine z Symfony 2.1 z poziomu kontrolera wewnętrznego

Sposób opisany w "Księdze" oznaczony jako przestarzały. Jaki jest nowoczesny (właściwy) sposób na zrobienie tego?

+0

Właściwie nie wiedziałem o tej przestarzałej metodzie do niedawna, zostało to odnotowane jako ostrzeżenie na stronie debugowania symfony2, a także powiedziało mi, jaka jest nowa metoda, której powinienem użyć. Zgaduję więc, że większość czasu znajdziesz na stronie debugowania. –

Odpowiedz

45

Zamiast tego należy użyć $this->getDoctrine()->getManager().

W rzeczywistości najlepiej nie informować kontrolerów o warstwie trwałości, z której korzystasz. Te rzeczy powinny zostać przeniesione do Service Layer, aby uprościć sposób przechowywania danych.

+0

Tak, racja. Dzięki) –

+1

Co masz na myśli? Czy wszystkie metody związane z bazą danych powinny zostać przeniesione do warstwy serwisowej? Jakie są korzyści? EntityManager jest już w Warstwie serwisowej (przypuszczam). Czy coś nie rozumiem? Czy możesz dać przykład? –

+0

@ Elnur Widziałem podobne stwierdzenia, jak "Nie powinieneś tego robić w kontrolerze" w każdym miejscu, ale wszystkie odpowiedzi nie wyjaśniają dlaczego. Wiem, że kontrolery są specyficzne dla szkieletu i przez utrzymywanie danych w kontrolerze twój kod nie jest tak przenośny, jak to tylko możliwe, ale nie widziałem konkretnego tego przykładu. – ILikeTacos

Powiązane problemy