Como señala mi IDE, el método AbstractController::getDoctrine() ahora está en desuso.
No he encontrado ninguna referencia para esta desaprobación ni en la documentación oficial ni en el registro de cambios de Github.
¿Cuál es la nueva alternativa o solución para este atajo?
Como se menciona aquí :
En lugar de usar esos accesos directos, inyecte los servicios relacionados en el constructor o en los métodos del controlador.
Necesitas usar la inyección de dependencia.
Para un controlador dado, simplemente inyecte ManagerRegistry en el constructor del controlador.
use Doctrine\Persistence\ManagerRegistry; class SomeController { public function __construct(private ManagerRegistry $doctrine) {} public function someAction(Request $request) { // access Doctrine $this->doctrine; } }Puede usar EntityManagerInterface $entityManager:
public function delete(Request $request, Test $test, EntityManagerInterface $entityManager): Response { if ($this->isCsrfTokenValid('delete'.$test->getId(), $request->request->get('_token'))) { $entityManager->remove($test); $entityManager->flush(); } return $this->redirectToRoute('test_index', [], Response::HTTP_SEE_OTHER); }Según la respuesta de @yivi y como se menciona en la documentación , también puede seguir el ejemplo a continuación inyectando Doctrine\Persistence\ManagerRegistry directamente en el método que desee:
// src/Controller/ProductController.php namespace App\Controller; // ... use App\Entity\Product; use Doctrine\Persistence\ManagerRegistry; use Symfony\Component\HttpFoundation\Response; class ProductController extends AbstractController { /** * @Route("/product", name="create_product") */ public function createProduct(ManagerRegistry $doctrine): Response { $entityManager = $doctrine->getManager(); $product = new Product(); $product->setName('Keyboard'); $product->setPrice(1999); $product->setDescription('Ergonomic and stylish!'); // tell Doctrine you want to (eventually) save the Product (no queries yet) $entityManager->persist($product); // actually executes the queries (ie the INSERT query) $entityManager->flush(); return new Response('Saved new product with id '.$product->getId()); } }