Php et twig: Comment charger les donnees (ex. commentaire) au scroll

141346
,

Bonjour, je demandais s'il est possible et si oui, comment faire des requêtes en ajax en utilisant PHP et twig.
Après la formation en PHP et Mise en pratique de la POO, j'ai intégrer un système des commentaires, qui fonctionne assez bien, mais je pensais qu'on pouvait faire mieux, par exemple afficher les commentaires au scroll, seulement quand on arrive à la section, Comme chez grafikart.fr

En gros charger des données depuis la vue les données de la base de données

Merci pour vos réponses :(

4 Réponse

27818
,

Bonjour jobson,

Je te redirige vers le tuto Scroll Spy, Je te laisse adapter à ton cas, mais c'est ce principe.

Tu devras lancer une requête ajax pour récupérer tes données et les afficher :)

141346
,

Kareylo, Merci j'ai un peu vu le tuto, mais mon grand probleme n'est pas cote js mais plutot comment justement faire des requetes

27818
,

Tu ne devrais avoir besoin que de l'ID de ton article et faire une requête dans ta tables de commentaires pour récupérer ceux qui ont l'id d'article voulu.

141346
,

Peut etre parce que je connais pas bien ajax mais j'ai realise avec twig et le code suivant et l'action que j'appelle

public function __invoke(Request $request)
    {
    // Ajouter un nouveau commenatire
        $slug = $request->getAttribute('slug');

        if ($request->getMethod() === 'POST') {
            $this->create($request);
        }
        try {
            $post = $this->postTable->findWithCategory($request->getAttribute('id'));
            $lastPosts = $this->postTable->findPublicForCategoryLimited(3);
            $categories = $this->categoryTable->makeQuery();
            if ($post->slug !== $slug) {
                return $this->redirect('blog.show', [
                    'slug' => $post->slug,
                    'id' => $post->id
                ]);
            }

            $comments = $this->commentTable->findForPost($request->getAttribute('id'));
            $replies = [];
            foreach ($comments as $k => $comment) {
                $replies[$comment->id] = $this->commentTable->findReply($comment->id);
            }
            return $this->renderer->render('@blog/show', [
                'post' => $post,
                'lastPosts' => $lastPosts,
                'categories' => $categories,
                'comments' => $comments,
                'replies' => $replies,
                'errors' => $this->errors,
                'item' => $this->item
            ]);

        } catch (NoRecordException $e) {
            $this->flash->error("Vous essayez d'afficher un article qui n'existe pas");
            return new RedirectResponse('/blog');
        }
    }