Bonjour,

Je suis actuellement en train de développer un blog avec tout naturellement des articles dedans. Mon but ici, est d'effectuer une recherche sur tous les articles, en Ajax. Cependant, je retrouve cette erreur "ArticleBundle\Entity\Article object not found."

Ce que je fais

Voici mon appel Ajax :

$(document).on('keyup', '.search', function() {
        var searchVal = $(this).val();
        $.ajax({
            url: Routing.generate('ajax_search_article'),
            type: "POST",
            dataType: "json",
            data: {
                "search": searchVal
            },
            success: function (response)
            {
                console.log(response);
            }
        });
    });

L'action au sein de mon controller Article :

/**
     * @Route("/search",
     *  options = { "expose" = true },
     *  name = "ajax_search_article",
     * )
     * @Method({"GET", "POST"})
     */
    public function ajaxSearchArticle(Request $request)
    {
        $em = $this->getDoctrine()->getManager();
        $search = $request->request->get('search');
        $articles = $em->getRepository('ArticleBundle:Article')->ajaxSearch($search);
    }

C'est au sein de ma page d'index des Articles que je veux utiliser cette action, voici l'IndexAction en question :

/**
     * Lists all article entities.
     *
     * @Route("/", name="article_index")
     * @Method("GET")
     */
    public function indexAction()
    {
        $em = $this->getDoctrine()->getManager();

        $articles = $em->getRepository('ArticleBundle:Article')->findAll();
        foreach($articles as $article) {
            $like = $em->getRepository('ArticleBundle:Like')->findBy(array('idArticle' => $article));
            $comment = $em->getRepository('ArticleBundle:Comment')->findBy(array('idArticle' => $article));
            $countLike = count($like);
            $countComment = count($comment);
            $article->countLike = $countLike;
            $article->countComment = $countComment; 
        }

        return $this->render('@Article/Default/index.html.twig', array(
            'articles' => $articles,
        ));
    }

J'ai bien conscience que mon call Ajax a une incidence sur mon entity Article, cependant, je ne sais pas / je ne comprends pas comment l'intégrer correctement à mon action. Dois-je passer en paramètre de ma route et de mon action quelque chose en particulier ?

En vous remerciant d'avance :)

3 réponses


Bonjour,

Petite question, il te sert à quoi le foreach ?

Car tu as un $articles = $em->getRepository('ArticleBundle:Article')->findAll(); et dans ta vue tu lui donne le $articles.

Youtaka
Auteur

Hello, mon foreach me sert à ajouter pour chaque article, le nombre de commentaire et de like pour chacun. Mais j'imagine qu'il y a plus optimisé ?

Bonjour,
Quand tu charges ton repository dans ton controlleur, tu charges la méthode suivante "ajaxSearch", il faudrait qu'on puisse voir cette méthode car je pense que ton erreur vient de là.
Tu ne retourne pas un json dans ton controlleur pour ta recherche en ajax, symfony devrait te cracher une erreur à ce niveau également.