IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Symfony PHP Discussion :

Récupérer plusieurs informations en page d'accueil


Sujet :

Symfony PHP

  1. #1
    Nouveau membre du Club
    Homme Profil pro
    Junior
    Inscrit en
    Septembre 2021
    Messages
    70
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Junior

    Informations forums :
    Inscription : Septembre 2021
    Messages : 70
    Points : 30
    Points
    30
    Par défaut Récupérer plusieurs informations en page d'accueil
    Bonjour,

    Je suis actuellement sur un projet de création d'un forum en Symfony 5.
    Mon but est de récupérer et d'afficher plusieurs informations sur la page d'accueil à savoir :
    - Le titre de chaque section/catégorie
    - Leur description
    - Le nombre total de sujets pour chaque section
    - Le nombre total de messages pour chaque section
    - Le dernier message posté avec sa date et son auteur

    Voici un aperçu

    Nom : Capture.PNG
Affichages : 168
Taille : 32,1 Ko

    J'ai bien récupéré les 3 premières informations. Seulement voilà, étant donné que j'ai une boucle for qui englobe tout le block main

    Code twig : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    {% block main %}
            {% for item in allTopic %}
                <div">                   
                    <div">
                        <h2><a href="{{ path('topic_browse', {id: item.id}) }}">{{ item.title }}</a></h2>
                        <p>{{ item.description }}</p>
                    </div>                 
                    <div>                     
                        <h3>Sujets</h3>                        
                        <p>{{ item.total_topic }}</p>
                    </div>         
                    <div>
                        <h3>Messages</h3>
                        <p></p>     
                    </div>
                    <div>
                        <p>Dernier message ici</p> 
                        <a href="#"></a>
                        <p>Le ...</p>
                        <p>Posté par ...</p>
                    </div>
                </div>
            {% endfor %}
    {% endblock %}


    Je me suis très vite heurté à une limite. A savoir que pour récupérer toutes les infos qu'il me faut, je devais insérer dans cette variable une "super requête" qui me récupérerait tout. Ce qui n'est pas tenable et trop compliqué.

    Je sais qu'il existe un moyen de récupérer toutes ces infos avec des méthodes bien spécifiques (par exemple une méthode qui va récupérer le nombre de sujets, une le nombre total de posts etc). Or je n'ai rien trouvé sur la doc de Symfony.

    Si des pro de PHP/Symfony pourraient m'aider je serai preneur.

    En vous remerciant

  2. #2
    Nouveau membre du Club
    Homme Profil pro
    Junior
    Inscrit en
    Septembre 2021
    Messages
    70
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Junior

    Informations forums :
    Inscription : Septembre 2021
    Messages : 70
    Points : 30
    Points
    30
    Par défaut
    Pour info vu que les entités sont liées entre elles, je n'arrive pas à faire une requête globale qui me regrouperait toutes les infos dont j'ai besoin.

    Code SQL : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    SELECT s.id, s.title, s.description, COUNT(t.section_id) total_topic FROM section s
    LEFT JOIN topic t ON s.id = t.section_id
    GROUP BY s.id

    Cette requête m'affiche bien les sections et leur nombre de topic respectif, elle affiche également les sections sans topic.

    Nom : Capture.PNG
Affichages : 117
Taille : 13,7 Ko

    Sauf que quand je fais une deuxième jointure avec l'entité POST

    Code SQL : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    SELECT s.id, s.title, s.description, COUNT(t.section_id) total_topic, COUNT(p.topic_id) total_post FROM section s
    LEFT JOIN topic t ON s.id = t.section_id
    LEFT JOIN post p ON t.id = p.topic_id
    GROUP BY s.id

    Ca m'affiche 5 topics au total alors que j'en ai que deux. Parce que vu que j'ai 5 posts dans mes fixtures, et qu'un post est forcément lié à un topic, ca me crée automatiquement des topics supplémentaires. Ce que je veux pas.

    Nom : Capture.PNG
Affichages : 108
Taille : 15,6 Ko

    Je trouve pas le moyen de trouver une requête qui me récupérerait à la fois les sections avec leur nombre de topic respectif et pour chaque topic respectif, leur nombre de posts.

  3. #3
    Expert éminent
    Avatar de Séb.
    Profil pro
    Inscrit en
    Mars 2005
    Messages
    5 091
    Détails du profil
    Informations personnelles :
    Âge : 46
    Localisation : France

    Informations professionnelles :
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Mars 2005
    Messages : 5 091
    Points : 8 194
    Points
    8 194
    Billets dans le blog
    17
    Par défaut
    Je trouve pas le moyen de trouver une requête qui me récupérerait à la fois les sections avec leur nombre de topic respectif et pour chaque topic respectif, leur nombre de posts.
    Donne un exemple de ce que tu voudrais en sortie.
    Un problème exposé clairement est déjà à moitié résolu
    Keep It Smart and Simple

  4. #4
    Nouveau membre du Club
    Homme Profil pro
    Junior
    Inscrit en
    Septembre 2021
    Messages
    70
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Junior

    Informations forums :
    Inscription : Septembre 2021
    Messages : 70
    Points : 30
    Points
    30
    Par défaut
    Nom : Capture.PNG
Affichages : 109
Taille : 18,2 Ko

    Le titre de la section
    Sa description

    Pour chaque section:

    Son nombre total de topic
    Son nombre total de post
    L'id vers le dernier post et sa date

    Voilà en tout. J'avais mis aussi l'auteur du dernier post mais j'arrive déjà à pas récupérer les infos précédentes donc j'ai préféré laissé tomber cette donnée.

  5. #5
    Expert éminent sénior

    Avatar de -Nikopol-
    Homme Profil pro
    Développeur Web
    Inscrit en
    Mai 2013
    Messages
    2 174
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : France, Haute Marne (Champagne Ardenne)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : Enseignement

    Informations forums :
    Inscription : Mai 2013
    Messages : 2 174
    Points : 11 289
    Points
    11 289
    Billets dans le blog
    5
    Par défaut
    Si tes entités sont liées tu n'as pas besoin de requetes sql, symfony et doctrine vont s'en charger, il faut pour cela que tu utilises des groups de sérialisation, tu pourra ainsi choisir les données que tu veux exposer.
    https://symfony.com/doc/current/serializer.html

  6. #6
    Nouveau membre du Club
    Homme Profil pro
    Junior
    Inscrit en
    Septembre 2021
    Messages
    70
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Junior

    Informations forums :
    Inscription : Septembre 2021
    Messages : 70
    Points : 30
    Points
    30
    Par défaut
    Merci Nikopol je me penche là dessus.

  7. #7
    Nouveau membre du Club
    Homme Profil pro
    Junior
    Inscrit en
    Septembre 2021
    Messages
    70
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Junior

    Informations forums :
    Inscription : Septembre 2021
    Messages : 70
    Points : 30
    Points
    30
    Par défaut
    Je suis sur le Serializer. C'est une méthode qui a l'air de convenir. Par contre j'ai un soucis.

    Quand je fais une annotation Groups sur l'id, le titre et la description de Section fourni par le findAll, j'ai bien les infos en json.

    Nom : Capture.PNG
Affichages : 116
Taille : 15,2 Ko


    Par contre quand l'annotation se fait sur l'id et le titre de l'entité Topic par exemple, il me les affiche pas.

    Le code que j'ai fait
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    $section = $sectionRepository->findAll();
    $sectionNormalize = $serializerInterface->serialize($section, 'json', ['groups' => 'section']);

  8. #8
    Expert éminent sénior

    Avatar de -Nikopol-
    Homme Profil pro
    Développeur Web
    Inscrit en
    Mai 2013
    Messages
    2 174
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : France, Haute Marne (Champagne Ardenne)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : Enseignement

    Informations forums :
    Inscription : Mai 2013
    Messages : 2 174
    Points : 11 289
    Points
    11 289
    Billets dans le blog
    5
    Par défaut
    Oui, c'est un peu capricieux je me suis deja fait avoir et ca m'arrive encore.
    il faut que tu vides le cache sf lorsque tu modifie les groups : php bin/console cache:clear

  9. #9
    Nouveau membre du Club
    Homme Profil pro
    Junior
    Inscrit en
    Septembre 2021
    Messages
    70
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Junior

    Informations forums :
    Inscription : Septembre 2021
    Messages : 70
    Points : 30
    Points
    30
    Par défaut
    Je viens de le faire et j'ai toujours rien du coté Topic

    EDIT : Ca fonctionne. J'ai utilisé le repository de Topic à la place de section, je récupère bien les infos.
    Par contre je ne comprend pas pourquoi depuis SectionRepository ca ne m'a pas afficher les Topic

    EDIT de l'EDIT : En fait non ca ne m'affiche pas tout. Je comprends pas le principe pour le moment. A chercher

  10. #10
    Expert éminent sénior

    Avatar de -Nikopol-
    Homme Profil pro
    Développeur Web
    Inscrit en
    Mai 2013
    Messages
    2 174
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : France, Haute Marne (Champagne Ardenne)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : Enseignement

    Informations forums :
    Inscription : Mai 2013
    Messages : 2 174
    Points : 11 289
    Points
    11 289
    Billets dans le blog
    5
    Par défaut
    as tu essayé des dump ou dd dans ton controller pour voir les retours de tes requetes ?
    poste tes entités et ton controller

  11. #11
    Nouveau membre du Club
    Homme Profil pro
    Junior
    Inscrit en
    Septembre 2021
    Messages
    70
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Junior

    Informations forums :
    Inscription : Septembre 2021
    Messages : 70
    Points : 30
    Points
    30
    Par défaut
    Oui j'ai bien fais des dd et dump de mes controller.

    L'entité Section

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    class Section
    {
        /**
         * @ORM\Id
         * @ORM\GeneratedValue
         * @ORM\Column(type="integer")
         * @Groups("section")
         */
        private $id;
     
        /**
         * @ORM\Column(type="string", length=64)
         * @Groups("section")
         */
        private $title;
     
        /**
         * @ORM\Column(type="string", length=255, nullable=true)
         * @Groups("section")
         */
        private $description;
     
        /**
         * @ORM\Column(type="datetime", nullable=true)
         */
        private $createdAt;
     
        /**
         * @ORM\Column(type="datetime", nullable=true)
         */
        private $updatedAt;
     
        /**
         * @ORM\OneToMany(targetEntity=Topic::class, mappedBy="section")
         */
        private $topic;
     
        /**
         * @ORM\OneToMany(targetEntity=Post::class, mappedBy="section")
         */
        private $posts;
    Mon controller MainController

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    /**
         * @Route("/", name="home")
         */
        public function browse(SectionRepository $sectionRepository, TopicRepository $topicRepository, SerializerInterface $serializerInterface): Response
        {
     
            $section = $sectionRepository->findAll();
    ;
     
            $sectionNormalize = $serializerInterface->serialize($section, 'json', ['groups' => 'section']);
            //dump($sectionNormalize);
     
     
            $response = new JsonResponse($sectionNormalize, 200, [], true);
     
            return $response;
     
            dump($response);

    L'entité Topic

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    class Topic
    {
        /**
         * @ORM\Id
         * @ORM\GeneratedValue
         * @ORM\Column(type="integer")
         * @Groups("section")
         */
        private $id;
     
        /**
         * @ORM\Column(type="string", length=64)
         * @Groups("section")
         */
        private $title;
     
        /**
         * @ORM\Column(type="string", length=255, nullable=true)
         */
        private $picture;
     
        /**
         * @ORM\Column(type="datetime")
         */
        private $createdAt;
     
        /**
         * @ORM\Column(type="datetime", nullable=true)
         */
        private $updatedAt;
     
        /**
         * @ORM\ManyToOne(targetEntity=Section::class, inversedBy="topic")
         * @Groups("section")
         */
        private $section;
     
     
        /**
         * @ORM\ManyToMany(targetEntity=User::class, mappedBy="topic")
         */
        private $users;
     
        /**
         * @ORM\OneToMany(targetEntity=post::class, mappedBy="topic")
         */
        private $topic;

    L'entité Post

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    class Post
    {
        /**
         * @ORM\Id
         * @ORM\GeneratedValue
         * @ORM\Column(type="integer")
         */
        private $id;
     
        /**
         * @ORM\Column(type="string", length=255)
         */
        private $content;
     
        /**
         * @ORM\Column(type="datetime")
         */
        private $createdAt;
     
        /**
         * @ORM\Column(type="datetime", nullable=true)
         */
        private $updatedAt;
     
        /**
         * @ORM\ManyToOne(targetEntity=User::class, inversedBy="post")
         * @ORM\JoinColumn(nullable=false)
         */
        private $user;
     
        /**
         * @ORM\ManyToOne(targetEntity=Topic::class, inversedBy="topic")
         * @ORM\JoinColumn(nullable=false)
         */
        private $topic;
    Je n'ai rien mis sur les controller Topic et Post. Je travaille sur le MainController.

    EDIT : Et bien sur j'ai bien le use Symfony\Component\Serializer\Annotation\Groups; sur l'entité Section et Topic

    J'ai raccourci le code de la fonction browse de la classe MainController

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    class MainController extends AbstractController
    {
        /**
         * @Route("/", name="home")
         */
        public function browse(SectionRepository $sectionRepository, TopicRepository $topicRepository, SerializerInterface $serializerInterface): Response
        {
     
            return $this->json($sectionRepository->findAll(), 200, [], ['groups' => 'section']);

  12. #12
    Expert éminent sénior

    Avatar de -Nikopol-
    Homme Profil pro
    Développeur Web
    Inscrit en
    Mai 2013
    Messages
    2 174
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : France, Haute Marne (Champagne Ardenne)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : Enseignement

    Informations forums :
    Inscription : Mai 2013
    Messages : 2 174
    Points : 11 289
    Points
    11 289
    Billets dans le blog
    5
    Par défaut
    Dans ton entité section tu dis au serializer que tu veux l'id, title, description avec @Groups("section") mais tu ne lui dis pas que tu veux tes entités liées :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
        /**
         * @ORM\OneToMany(targetEntity=Topic::class, mappedBy="section")
         */
        private $topic;
     
        /**
         * @ORM\OneToMany(targetEntity=Post::class, mappedBy="section")
         */
        private $posts;
    donc il te faut rajouter ici une annotation Groups.

    mais attention, en l'etat tu vas avoir une reference circulaire car dans ton entité topic :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
        /**
         * @ORM\ManyToOne(targetEntity=Section::class, inversedBy="topic")
         * @Groups("section")
         */
        private $section;
    ici il ne te faut pas d'annotation sinon lors du findAll de section tu vas appeler topic qui va appeler section qui va appeler topic...

    J'espère avoir été clair

  13. #13
    Nouveau membre du Club
    Homme Profil pro
    Junior
    Inscrit en
    Septembre 2021
    Messages
    70
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Junior

    Informations forums :
    Inscription : Septembre 2021
    Messages : 70
    Points : 30
    Points
    30
    Par défaut
    Ca marche nickel merci ! En suivant un tuto Youtube il parlait effectivement de la référence circulaire. Sauf que j'ai pas mis l'annotation sur private $topic de l'entité Section mais sur private $section de l'entité Topic.

    J'ai bien les infos qui vont bien.

    Nom : Capture.PNG
Affichages : 97
Taille : 14,6 Ko

  14. #14
    Nouveau membre du Club
    Homme Profil pro
    Junior
    Inscrit en
    Septembre 2021
    Messages
    70
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Junior

    Informations forums :
    Inscription : Septembre 2021
    Messages : 70
    Points : 30
    Points
    30
    Par défaut
    J'avoue être assez perdu pour la manipulation et l'affichage de ces données. Par exemple je vois pas du tout comment afficher le titre de chaque section sur twig avec ces données en JSON.

    Par exemple ici sur mon TWIG home je veux afficher le titre de chaque section, j'ai donc testé un response.getContent

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    <div class="section border-top border-dark d-flex justify-content-between">                   
                <div class="item-left pl-5 pt-2 flex-grow-1">
                    <h2><a href=""></a>{{ response.getContent }}</h2>
                    <p></p>
                </div>

    Ce qui m'affiche logiquement tout le contenu

    Nom : Capture.PNG
Affichages : 91
Taille : 95,2 Ko

    Mais comment afficher juste le titre de chaque section par exemple ?

    Mon controller

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    $section = $sectionRepository->findAll();
     
            $json = $serializerInterface->serialize($section, 'json', ['groups' => 'test']);
     
            $response = new JsonResponse($json, 200, [], true);
     
            return $this->render('main/index.html.twig', [
     
                'response' => $response
     
            ]);

  15. #15
    Expert éminent sénior

    Avatar de -Nikopol-
    Homme Profil pro
    Développeur Web
    Inscrit en
    Mai 2013
    Messages
    2 174
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : France, Haute Marne (Champagne Ardenne)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : Enseignement

    Informations forums :
    Inscription : Mai 2013
    Messages : 2 174
    Points : 11 289
    Points
    11 289
    Billets dans le blog
    5
    Par défaut
    essaye response.getContent[0].title

  16. #16
    Nouveau membre du Club
    Homme Profil pro
    Junior
    Inscrit en
    Septembre 2021
    Messages
    70
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Junior

    Informations forums :
    Inscription : Septembre 2021
    Messages : 70
    Points : 30
    Points
    30
    Par défaut
    Il m'affiche ca :

    Nom : Capture.PNG
Affichages : 97
Taille : 47,2 Ko

    Quand je fais aussi avec un simple getContent[0]

    Ce que j'ai quand je dump la variable

    Nom : Capture.PNG
Affichages : 99
Taille : 18,5 Ko

  17. #17
    Nouveau membre du Club
    Homme Profil pro
    Junior
    Inscrit en
    Septembre 2021
    Messages
    70
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Junior

    Informations forums :
    Inscription : Septembre 2021
    Messages : 70
    Points : 30
    Points
    30
    Par défaut
    Le serializer me parait complexe pour ce que j'ai à faire. Je m'y prends probablement mal mais j'ai réessayé avec des requêtes customs ca me donne ca :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    $section = $sectionRepository->findAll();
            $topic = $sectionRepository->allTopicPerSection();
            $post = $topicRepository->CountAllPost();
            $lastPost = $topicRepository->lastPost();
    Le findAll va me récupérer le titre et la description de la section
    Le allTopicPerSection va me dénombrer le nombre total de topic par section
    CountAllPost => nbre total de posts/topic
    lastPost => lien et date du dernier topic de la section

    Sur mon twig ca donne ca

    Nom : Capture.PNG
Affichages : 91
Taille : 26,4 Ko

    Problème : c'est pas propre du tout. Je suis obligé de saisir l'index du tableau pour tomber sur les bonnes valeurs. Et en plus j'ai toujours la problématique de la boucle.

    Comment boucler sur twig pour afficher mes résultats en une seule fois ?

    Pour le moment j'ai ca :

    Nom : Capture.PNG
Affichages : 80
Taille : 11,8 Ko

  18. #18
    Expert éminent sénior

    Avatar de -Nikopol-
    Homme Profil pro
    Développeur Web
    Inscrit en
    Mai 2013
    Messages
    2 174
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : France, Haute Marne (Champagne Ardenne)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : Enseignement

    Informations forums :
    Inscription : Mai 2013
    Messages : 2 174
    Points : 11 289
    Points
    11 289
    Billets dans le blog
    5
    Par défaut
    là tu fais 4 requetes alors qu'une seulle suffit avec le serializer
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    $section = $sectionRepository->findAll();
     
            $json = $serializerInterface->serialize($section, 'json', ['groups' => 'test']);
     
            $response = new JsonResponse($json, 200, [], true);
     
            return $this->render('main/index.html.twig', [
     
                'response' => $response
     
            ]);
    l'erreur est que tu melange deux methodes pour le return, soit tu return $response = new JsonResponse($json, 200, [], true); sans le render (ce que tu ferais si tu voulais une api)
    soit tu retournes ta varaible $json (il faudrait la renommer et utilise le pluriel c'est plus facile de s'y retrouver par la suite) en la passant à twig.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    $sections = $sectionRepository->findAll();
     
            $json = $serializerInterface->serialize($section, 'json', ['groups' => 'test']);
     
            return $this->render('main/index.html.twig', [
     
                'sections' => $sections
     
            ]);
    là tu devrais pouvoir utiliser ta variable sections dans twig.

  19. #19
    Nouveau membre du Club
    Homme Profil pro
    Junior
    Inscrit en
    Septembre 2021
    Messages
    70
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Junior

    Informations forums :
    Inscription : Septembre 2021
    Messages : 70
    Points : 30
    Points
    30
    Par défaut
    Oui 4 requêtes c'est clairement pas gérable j'ai laissé tomber.

    Du coup pour revenir au Serializer voilà ce que j'ai fait sur ton conseil :

    Controller

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    $sections = $sectionRepository->findAll();
     
            $allJsonStats = $serializerInterface->serialize($sections, 'json', ['groups' => 'test']);
     
            dump($allJsonStats);
     
            return $this->render('main/index.html.twig', [
                'allStatsPerSection' => $allJsonStats,
            ]);
        }
    Dump de allStatsPerSection sur Twig

    Nom : Capture.PNG
Affichages : 87
Taille : 45,9 Ko

    Je vois pas comment utiliser ce bloc. J'ai ressayé comme tu m'as dit, donc ici allStatsPerSection[0].title mais ca me fait toujours la meme erreur.
    Nom : Capture.PNG
Affichages : 82
Taille : 22,0 Ko

    Il me le considère comme un string
    Images attachées Images attachées  

  20. #20
    Expert éminent sénior

    Avatar de -Nikopol-
    Homme Profil pro
    Développeur Web
    Inscrit en
    Mai 2013
    Messages
    2 174
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : France, Haute Marne (Champagne Ardenne)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : Enseignement

    Informations forums :
    Inscription : Mai 2013
    Messages : 2 174
    Points : 11 289
    Points
    11 289
    Billets dans le blog
    5
    Par défaut
    fais ton dump dans ton twig tu verras comment reccuperer la variable

Discussions similaires

  1. Récupérer plusieurs informations - tableau ?
    Par feldi dans le forum JDBC
    Réponses: 4
    Dernier message: 22/01/2012, 16h37
  2. [phpBB][3] Récupérer les informations des sondages et faire une page de statistiques
    Par boubouchon dans le forum EDI, CMS, Outils, Scripts et API
    Réponses: 5
    Dernier message: 06/04/2009, 20h47
  3. Parser une page et d'en récupérer une information
    Par lecyberax dans le forum EDI, CMS, Outils, Scripts et API
    Réponses: 1
    Dernier message: 30/01/2008, 13h42
  4. [RegEx] Récupérer des informations d'une page HTML distante
    Par Marshall_Mathers dans le forum Langage
    Réponses: 2
    Dernier message: 27/02/2007, 16h49
  5. [MySQL] Checkboxes : récupérer les informations sur plusieurs lignes
    Par eric41 dans le forum PHP & Base de données
    Réponses: 14
    Dernier message: 12/06/2006, 12h41

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo