Voila j'etait entrain de coder un site ecommerce pour un projet d'etudes et j'ai voulu faire une requete de selection en utilisant le repository, mais cela me fait une erreur sur "getDoctrine" qui est barré car "getDoctrine is deprecated"

class SHOPController extends AbstractController
{
    /**
     * @Route("/SHOP", name="SHOP")
     */
    public function index(): Response
    {
        $repo = $this->getDoctrine()->getRepository(Article::class);

        $articles = $repo->findAll();
        return $this->render('SHOP/home.html.twig', [
            'controller_name' => 'SHOPController',
            'articles' => $articles
        ]);
    }

je cherche ducoup a obtenir une alternative pour cet methode si quelqun peut m'aider je ne m'en sors pas du tout
Merci

Aucune réponse


Bonjour,

la façon de faire actuelle est d'injecter directement le repository dans ta méthode :


public function index(ArticleRepository $repo): Response
{
    $articles = $repo->findAll();
    return $this->render('SHOP/home.html.twig', [
            'controller_name' => 'SHOPController',
            'articles' => $articles
        ]);
}

Et si tu utilises le repo dans plusieurs méthodes, tu peux l'injecter dans le constructeur.

Hello

Depuis la version 5.4 la methode GetDoctrine est deprecated, tu dois injecter le "ManagerRegistry" dans la methode

Tu peux faire comme ceci

class SHOPController extends AbstractController
{
    /**
     * @Route("/SHOP", name="SHOP")
     */
    public function index(ManagerRegistry $doctrine): Response
    {
        $articles = $docteine->getRepository(Article::class)->findAll();

        return $this->render('SHOP/home.html.twig', [
            'controller_name' => 'SHOPController',
            'articles' => $articles
        ]);
    }

Une autre solution tu peux injecter directement ArticleRepository dans la methode

La doc de symfony: https://symfony.com/doc/current/doctrine.html#fetching-objects-from-the-database

Tu peux te faire injecter ton repo dans ta fonction index directement ou via le constructeur de ta classe

via injection de dépendence :

public function index(ArticleRepository $articleRepository): Response
    {
        $articles = $articleRepository->findAll();
        return $this->render('SHOP/home.html.twig', [
            'controller_name' => 'SHOPController',
            'articles' => $articles
        ]);
    }